使用PHP和AJAX请求的简单MySQL登录

3

我正在尝试使用PHP创建一个非常简单的MySQL登录函数。用户名和密码通过AJAX发布到PHP。AJAX函数如下:

function login(){

var user = document.getElementById("username").value;
var pass = document.getElementById("password").value;

    $.ajax({

        url : "login.php",
        type : "POST",
        data : {
            username : user,
            password : pass
        },
        success : function(response){
            alert(response);
        },
        error : function(response){
            alert(response);
        }
    });
}

登录脚本:
$conn = new mysqli($host, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
//echo "Connected successfully";
$user = $_POST['username'];
$pass = $_POST['password'];


$query="SELECT * FROM Users WHERE email = '$user' AND password ='$pass' LIMIT 1";

$result = $conn->query($query);
$count = $result->num_rows;
if($count == 1){
     echo "success";
}else{
    echo "incorrect login details";
}

$conn->close();
?>

似乎无论用户名和密码是否正确,$count始终为零。 我已经验证了在PHP中成功检索到了用户名和密码。
甚至更简单的查询SELECT * FROM Users也返回0个计数。
尝试echo或var_dump $result会显示对象Object。
有人能看到这段代码有什么明显的问题吗?非常感谢您的帮助。
注意:该简单函数不是为安全而设计的,因此格式不安全。

$count = mysqli_num_rows($result); 请尝试此代码。 - cfprabhu
请问您能否回显 $query - HoangHieu
@HoangHieu 提示信息在显示查询和对象“Object”之间交替出现。具有查询的输出结果(由于隐私原因已编辑,字符是正确的):SELECT * FROM Users WHERE email='@.com' AND password ='*******' LIMIT 1,表示登录详情不正确。 - denverCoder9
请输出 count 变量的值,好吗? - cfprabhu
@cfprabhu echo-ing $count 看起来没有任何作用,警报只显示“登录详细信息不正确”。 - denverCoder9
显示剩余3条评论
1个回答

0
我建议将以下内容更改为字符串并运行PHP脚本。如果这些字符串出现在您的数据库中,那么您就可以排除它是由PHP脚本引起的,这种情况下可能是HTML和AJAX元素的问题。
//$user = $_POST['username'];
//$pass = $_POST['password'];

$user = 'userTest';
$pass = 'userPass';

非常感谢您的输入!从中解决了问题,发现$db_name变量拼写错误。简直不敢相信我没能早点发现它。 - denverCoder9
太好了,很高兴能帮助到你。 - denski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接