简单===匹配失败的PHP

时间:2016-08-22 20:31:54

标签: php session

我正在尝试将用户输入密码与数据库中存储的密码相匹配。到目前为止,它工作得非常好但突然之间开始表现得很奇怪。

尽管信息正确,但脚本开始显示无效的电子邮件ID或密码的错误。刷新窗口显示错误后立即显示存储在$ _Session变量中的用户名(表示用户已登录)。

但是当用户没有达到用户名存储在$ _session中的点时,这怎么可能呢?

无论如何,我试图在脚本开始时取消设置会话变量,认为$ _session没有完全被破坏(尽管它已经被破坏)但是它也没有用。

我已经在 $ check_password === $ row ['密码'] 上使用strcmp进行了测试,但没有成功。我还用" =="进行了测试。经营者,但没有运气。

令人惊讶的是,当我在localhost上尝试这个时,它工作正常,但在服务器上它会产生错误,如上所述。

我检查了错误日志,但没有任何内容。任何线索,是什么造成的?

foreach($result as $row)
{
    $pass = hash('sha256', $_POST['password'] . $row['salt']);
    for($round = 0; $round < 65536; $round++) { $check_password = hash('sha256', $pass . $row['salt']); }

    if($check_password===$row['password'])
    {
        // check if e-mail verification has been done or not
        if(strcmp($row['activation'],"Active")==0)
        {               
            $_SESSION['username'] = $row['username'];

            $response['status'] = 'success';
            $response['message'] = 'Login successful.';
        }
        else
        {
            $response['status'] = 'failure';
            $response['message'] = 'Your Account is Not verified Yet. Kindly verify your account via Login panel Verify Account link.'; 
        }
    }
    else
    {
        $response['status'] = 'failure';
        $response['message'] = 'Invalid Email id or password.';  <--- Error point           
    }
}

添加两个相同密码的图像。 enter image description here

1 个答案:

答案 0 :(得分:0)

我不知道这是否是解决这个问题的正确方法,但不知怎的,这就行了。

$response['message'] = 'Login successful.';解决问题后添加以下行。

echo json_encode($response);
exit;

但我仍然无法理解,'Invalid Email id or password.'错误是如何显示的,if语句成功执行到登录成功消息的时间。