登录数小时后,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'>&times;</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'>&times;</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:可能是。。。如果你有其他主机,那么把代码放在那里只是为了测试我已经处理了这个问题,先生,这是另一个脚本更新了其他东西