登录数小时后,php登录脚本无法登录
我的站点上的登录脚本有问题,该脚本在用户注册后工作。它将允许用户登录,但在一小时或更长的时间后,该脚本将拒绝用户登录,并说登录数小时后,php登录脚本无法登录,php,Php,我的站点上的登录脚本有问题,该脚本在用户注册后工作。它将允许用户登录,但在一小时或更长的时间后,该脚本将拒绝用户登录,并说不正确的登录详细信息(当用户密码不正确时会出现此错误)但在这种情况下,密码是正确的,我试图理解这种问题的原因 当用户恢复密码并使用它登录时,它将再次登录。求你了,我需要帮助 下面是登录的代码 <?php if (isset($_POST['loginaccount'])) { $usernamefor = $_POST['usernamelogin'];
不正确的登录详细信息
(当用户密码不正确时会出现此错误)但在这种情况下,密码是正确的,我试图理解这种问题的原因
当用户恢复密码并使用它登录时,它将再次登录。求你了,我需要帮助
下面是登录的代码
<?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>";
}
}
}
您在此处出现打字错误:
$username = mysqli_real_escape_string($connect, $usernamefor);
$pass = mysqli_real_escape_string($connec, $passwordfor);
$connect
不等于$connec
还有几点建议:
$username==$username
此条件是不必要的,因为您在循环中覆盖此变量
其次,不要在数据库中保存普通密码
第三,我希望您使用的是session\u start()
用于此$\u session['id']=$id代码>
第四,您的查询将只返回一条记录,那么为什么在这里使用而循环呢
第五,您的代码对于SQL注入是完全开放的,为了防止,请使用prepared语句
第六,如果您在查询中没有使用密码字段,则无需使用mysqli\u real\u escape\u string()
但您没有使用密码字段检查查询中的注册用户。您是指密码字段吗,先生?但是上面的代码不会登录用户,但是过了一些时候,它会开始说不正确的登录详细信息,而不会存储纯文本密码!请使用PHP来处理密码安全性。如果您使用的PHP版本低于5.5,则可以使用密码\u hash()
。在散列之前,不需要对它们执行任何操作或使用任何其他清理机制。这样做会更改密码并导致不必要的额外编码。对不起,先生,在此处键入$connect变量是一个错误,在主脚本中完全正确先生,感谢您的帮助,请原谅,我想问一些问题,您的意思是在用户仪表板中启动会话,如果这就是你的意思,我在仪表板上有session_start是登录头goesys,我在仪表板上启动了会话,登录将重定向到该仪表板。第二,同一个脚本在另一个网站上使用,但它没有这样做。第三,你认为流量可以使这样的脚本做这样的事情或黑客issues@richboy:可能是。。。如果你有其他主机,那么把代码放在那里只是为了测试我已经处理了这个问题,先生,这是另一个脚本更新了其他东西