这些函数将根据 MySQL 数据库中匹配的用户名和密码登录用户。
// function to escape data and strip tags
function safestrip($string){
$string = strip_tags($string);
$string = mysql_real_escape_string($string);
return $string;
}
//function to show any messages
function messages() {
$message = '';
if($_SESSION['success'] != '') {
$message = '<span class="success" id="message">'.$_SESSION['success'].'</span>';
$_SESSION['success'] = '';
}
if($_SESSION['error'] != '') {
$message = '<span class="error" id="message">'.$_SESSION['error'].'</span>';
$_SESSION['error'] = '';
}
return $message;
}
// log user in function
function login($username, $password){
//call safestrip function
$user = safestrip($username);
$pass = safestrip($password);
//convert password to md5
$pass = md5($pass);
// check if the user id and password combination exist in database
$sql = mysql_query("SELECT * FROM table WHERE username = '$user' AND password = '$pass'")or die(mysql_error());
//if match is equal to 1 there is a match
if (mysql_num_rows($sql) == 1) {
//set session
$_SESSION['authorized'] = true;
// reload the page
$_SESSION['success'] = 'Login Successful';
header('Location: ./index.php');
exit;
} else {
// login failed save error to a session
$_SESSION['error'] = 'Sorry, wrong username or password';
}
}
用法
值将从表单中捕获,然后传递给主函数
login($username, $password);
所有涉及的页面都会在某个地方有 messages 函数,以便提供适当的使用反馈
messages();
// 登录用户功能
function login($username, $password){
// 调用 safestrip 函数
$user = safestrip($user);
$pass = safestrip($pass);
首先使用完整版的 $username 和 $password 变量,然后使用它们的简短版本…这样做是行不通的
谢谢,已修复。
谢谢 Chris,
我发现你的网站非常信息丰富,我从你那里学到了很多好东西
嗨 Chris
喜欢这个网站 - 关于这段代码有一个快速问题。
我遇到了一些问题,sql 查询无法获取我的用户名或密码,直到我移动…
// 将密码转换为 md5
$pass = md5($pass);
在查询代码段下方
我是 md5 函数的新手,我不确定我做的是否正确,但这是它似乎正常运行的唯一方法。
这意味着你的数据库中的密码没有哈希化。
md5 会为你的文本字符串提供一个不可逆的 32 个字符的哈希代码。
例如
md5('hi')
结果是
49f68a5c8493ec2c0bf489821c21fc3b
它非常有用,如果有人进入你的数据库,他们将不知道所有用户的密码。
@Dyllon
彩虹表 - MD5 被认为是目前使用最糟糕的加密方法之一。
我建议使用 crypt()
这是我多年来一直使用的函数(而且还没有人能破解它!)
将“aZXCeqsdGEADfubAFSDBUIegdvbuiEG8432”更改为您想要的任何内容 - 只要它不动态更改(例如,使用 rand() 函数生成字符串) - 它必须保持不变;)
如果你没有初始化调用 session_start() 的会话,你的会话变量将始终通过错误选项获取…
嘿,我很好奇,如果我要使用这个,我需要将它粘贴到每个需要登录的页面上吗?
我该如何制作多个需要从其中登录的页面?
请将你的答案发邮件给我。谢谢。
嗨,各位,
我也在寻找同样的东西.. 你们为什么不为完整的登录模块创建代码并发布在这里?这样大多数人就可以使用它。
等待回复。至少通过电子邮件。
谢谢,
Sankar。
您好 Chris,
我可以在 WordPress 中使用这个登录功能吗?
如果需要,我应该使用哪些修改?
是否有关于最终用户登录、使用 WordPress 注册的视频或文章?
致敬
Andy
我建议不要使用 MD5 哈希,因为它不再被认为是安全的。
这篇文章很久以前就发布了,应该删除。这里有很多问题。没有从 javascript 中隐藏 SessionID,没有重新生成和销毁会话,mysql_real_escape_string 不安全,MD5 可以解密,密码没有加盐。如果你正在寻找一个相当安全的登录脚本,请告诉我。我很乐意提高认识。
我只是想知道,我应该把这些代码放在哪里?或者如何保存这个?
md5 很好,但 ripemd128 哈希要好很多
hash('ripemd128', $pass);
此代码已过时且不安全。应立即删除。
任何人都不要使用这段代码!