使用密码登录在php
问题描述:
我无法通过此代码登录,因为我使用了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 />";
}
}
答
我做到了!
$username = $_POST['username'];
$password = $_POST['password'];
include ('connect-db.php');
$username = mysql_real_escape_string($username);
$hash= 'atvfbgirejgtjrgjdfpgkjdpfkjgdSTYjj!';
$check=password_verify($password,$hash);
$load=mysql_query ("SELECT * FROM users WHERE username='$username' AND password='$password'");
if($load){
session_start();
$_COOKIE['username'] = $_POST['username'];
$_COOKIE['password'] = $_POST['password'];
echo "You Are Login<br /><br />"
}
else{
echo "Wrong Information! Not Login<br />";
}
mysql_close();
+0
我在网站上的密码通常是'\'OR 1 = 1或1 = \'2' – Martin
+1
您是否阅读过上述评论? –
哇......这里有很多错误。为什么你要把密码放在$ _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