了解嵌套的If .. Else语句

时间:2012-04-10 23:22:08

标签: php mysql

由于某些原因,我的PHP登录脚本不断返回“无效的电子邮件/密码组合”,但我知道我输入了正确的电子邮件和密码。有谁看到我可能做错了什么?

<?php

$email= $_POST['email'];
$password= $_POST['password'];

if (!empty($email) && !empty($password)) {

    $connect= mysqli_connect("localhost", "root", "", "si") or die('error connecting with the database');
    $query= "SELECT user_id, email, password FROM users WHERE email='$email' AND            
    password='$password'";
    $result= mysqli_query($connect, $query) or die('error with query');

    if (mysqli_num_rows($result) == 1) {
        $row= mysqli_fetch_array($result);
        setcookie('user_id', $row['user_id']);
        echo "you are now logged in";
    } else {
        echo "invalid username/password combination";
    }

} else {
    echo" you must fill out both username and password";
}

?>

4 个答案:

答案 0 :(得分:2)

我会把它换成说,

if (mysqli_num_rows($result) > 0)

但除此之外,代码看起来应该可以工作。你确定$ _POST变量包含你认为应该包含的内容吗?您确定数据库中存在此用户/通行证组合吗?

答案 1 :(得分:2)

您的代码看起来很好。我会检查以下内容:

确保查询正常运行。我会回显查询并在您的数据库程序中的数据库上运行它,看看结果是什么。

确保您拥有该电子邮件/密码组合的用户不超过1个 - 这会使您的计数检查无效。

检查发布的详细信息,确保它们与数据库中的内容一致(没有杂散的空格等)。

最后,您最好正确缩进并布置代码,看看在这里阅读的容易程度:http://codepad.org/DmtMuTpC

答案 2 :(得分:1)

mysqli_num_rows ( $result )不等于1时,您会关注...我认为您应该做的是验证usernamepassword是否直接存在于invalid username/password combination数据库.....这是您的脚本中唯一合理的原因,您应该获得{{1}}

如果您还有其他问题,请告诉我

答案 3 :(得分:0)

出现错误是因为数据库中存在重复数据。