0
我无法通过此代码登录,因为我使用了crypt功能,并且当我想要登录时密码检查与密码表单数据库的编码有问题,并将其与密码匹配输入:使用密码登录在php
$username = $_POST['username'];
$password = $_POST['password'];
$check_error=0;
include ('connect-db.php');
$username = mysql_real_escape_string($username);
$password = crypt($password, '$2a$07$usesomesillystringforsalt$');
if (crypt($user_input, $digest) == $digest)
if ($check_error != 1){
$result = mysql_query ("SELECT * FROM user WHERE username = '$username' AND password = '$password'");
$count = mysql_num_rows($result);
if($count > 0){
session_start();
$_SESSION['username'] = $_POST['username'];
$_SESSION['password'] = $_POST['password'];
echo "login<br /><br />";
}
else{
echo "not login!<br />";
}
}
哇......这里有很多错误。为什么你要把密码放在$ _SESSION中?什么是'$ user_input'和什么是'$ digest'?因为这些变量都不在您的代码中。在if(crypt($ user_input,$ digest)== $ digest)'之后,你还缺少一个开始插入符。另外,在你尝试匹配它之前,你似乎在'$ password'上运行crypt(),这是错误的。你运行类似'if(crypt($ _ POST ['password'],$ valuefromdatabase))=== $ valuefromdatabase)' – junkfoodjunkie
1.您使用的是古老的API,我强烈建议您切换到'mysqli_'或PDO **准备好陈述**。 2.在会话中存储密码是一个坏主意。 – Qirel
**警告**:编写您自己的访问控制层并不容易,并且有很多机会使其严重错误。请不要在[Laravel](http://laravel.com/)等任何现代开发框架(http://codegeekz.com/best-php-frameworks-for-developers/)上编写自己的认证系统,内置了强大的[认证系统](https://laravel.com/docs/5.2/authentication)。绝对不要遵循[推荐的安全最佳实践](http://www.phptherightway.com/#security)和**从不将密码存储为纯文本**。 – tadman