我的网站上的登录脚本有问题,该脚本在用户注册后可以正常运行,将允许用户登录,但是经过一个小时或更长时间后,该脚本将拒绝用户登录incorrect login details
(当用户密码不正确时会出现此错误),但是在这种情况下密码是正确的,我已尝试了解这种问题的原因。
再次当用户恢复密码并使用它登录时,它将登录。请我需要一些帮助 下面是登录代码
<?php
if (isset($_POST['loginaccount'])) {
$usernamefor = $_POST['usernamelogin'];
$passwordfor = $_POST['passwordlogin'];
$username = mysqli_real_escape_string($connect, $usernamefor);
$pass = mysqli_real_escape_string($connect, $passwordfor);
$query = "SELECT * FROM users WHERE username = '{$usernamefor}' ";
$query = mysqli_query($connect, $query);
$count = mysqli_num_rows($query);
if (!$query) {
die("QUERY FAILED". mysqli_error($connect));
}
if ($count <= 0) {
$error1 = "<div class='danger'><a href='#' class='close' data-dismiss='alert' aria-label='close'>×</a>Sorry you are not a registered user </div>";
} else {
while ($row = mysqli_fetch_array($query)) {
$id = $row['id'];
$username = $row['username'];
$user_password = $row['password'];
}
$passwordloader = crypt($pass, $user_password);
if ($username == $username && $passwordloader == $user_password) {
header("Location: the users dasboard");
// the below set various sessions for users//
$_SESSION['id'] = $id;
} else {
$error2 = "<div class='danger'><a href='#' class='close' data-dismiss='alert' aria-label='close'>×</a>Sorry your login details in incorect</div>";
}
}
}
答案 0 :(得分:1)
您在这里遇到拼写错误:
$username = mysqli_real_escape_string($connect, $usernamefor);
$pass = mysqli_real_escape_string($connec, $passwordfor);
$connect
不等于$connec
更多建议:
$username == $username
不需要此条件,因为您正在while
循环中覆盖此变量。
第二,不要在数据库中保存普通密码。
第三,我希望您为此session_start()
$_SESSION['id'] = $id;
第四,您的查询将仅返回1条记录,然后为什么在这里使用while
循环。
第五,您的代码可以进行SQL注入,以防止使用准备好的语句。 How to use prepared statement
第六,,如果您在查询中未使用密码字段,则无需使用mysqli_real_escape_string()