用户登录在PHP中不起作用
我的登录方式似乎不正确。如果用户输入了错误的详细信息,它仍然会将用户指向登录页面。有什么问题吗用户登录在PHP中不起作用,php,sql,login,Php,Sql,Login,我的登录方式似乎不正确。如果用户输入了错误的详细信息,它仍然会将用户指向登录页面。有什么问题吗 $username=$_POST['Username']; $password=$_POST['Password']; $qry=mysql_query("SELECT * FROM users WHERE `Username`='$username' AND `Password`='$password'", $con); if(!$qry) { mysql_close($con); die
$username=$_POST['Username'];
$password=$_POST['Password'];
$qry=mysql_query("SELECT * FROM users WHERE `Username`='$username' AND `Password`='$password'", $con);
if(!$qry) {
mysql_close($con);
die("Query Failed: ". mysql_error());
} else {
$row=mysql_fetch_array($qry);
}
if($_POST['username']==$row["Username"]&&$_POST['password']==$row["Password"])
{
session_start();
$_SESSION['Firstname']=$_POST['Username'];
mysql_close($con);
header("Location:index_logged_in.php");
}
else
{
mysql_close($con);
header ("Location:login.php?id=Incorrect username or password. Please Enter Again.");
}
//This is what is in the logged in page
include('connection2.php');
session_start();
if(!$_SESSION['Firstname']) {
header("");
}
我对mysql很满意 您不应该存储用户密码,这存在一些严重的责任问题 我清理了你的代码
$username = $_POST['Username'];
$password = $_POST['Password'];
$results = mysql_query("SELECT 1 FROM `users` WHERE `Username`='$username' AND `Password`='$password'");
$rows = mysql_num_rows($results);
if($rows > 0){
session_start();
$_SESSION['Firstname'] = $username;
header("Location:index_logged_in.php");
}
else{
header ("Location:login.php?id=I
}
mysql_close($con);
保存用户密码时,首先对其进行哈希运算
$password = hash('ripemd320',$password )
没有解决任何有争议的问题,我想这可能就是为什么你没有得到你期望的结果。在代码的开头,使用
$username=$\u POST['username']
和$password=$\u POST['password']
获取用户名和密码,并使用这些变量运行查询。随后,您将使用以下命令:
if($_POST['username']==$row["Username"]&&$_POST['password']==$row["Password"])
如果用户名和密码与数据库中的任何内容都不匹配,则
$row=mysql\u fetch\u array($qry)代码>将返回false
。由于未设置$\U POST['username']
和$\U POST['password']
($\U POST['username']
和$\U POST['password']
已设置,请注意大写的U和P),因此在比较这些值时,基本上比较的是false
和null
,使用==/code>时,是相等的。在打开PHP标签后立即将错误报告添加到文件顶部,例如请不要在问题中发布网站名称,使用此代码很容易攻击您的网站。在谷歌搜索php mysql注入,也可以使用===而不是==。由于php哈希漏洞。在这里添加错误列表:密码存储为纯文本,仍然使用折旧后的mysql\u*您需要停止使用mysql\u*
函数,改用PDO
或mysqli
,您需要使用带有绑定参数的准备语句,您需要使用password\u hash()
$\u POST['username']
!=<代码>$\u POST['Username']
你的“清理代码”甚至不能解决你提到的严重责任问题。“mysql是因为它比mysqli更安全”-让人难以置信。证据-请(老实说)我不是专家-手册(以及我读过的每个网站)告诉我要搬到mysqli-我就是这么做的。我倾向于相信除你之外的每一个人。@误解了正在进行的工作?如果您的意思是“仍然接收已发现漏洞的更新”,而不是不推荐使用的ext/mysql,它不再接收定期更新,很快将从PHP中删除,那么您是正确的。这是件坏事吗?Mysqli已经成为PHP的一部分11年了。这不是什么新鲜事。4个结果-全部修复-那么嗯?
if($_POST['username']==$row["Username"]&&$_POST['password']==$row["Password"])