我一直在努力审查并继续阅读Larry Ullman的PHP和MySQL第4版第15章 login_ajax.php 的第15节,其中说:
修改login_ajax.php,使其使用数据库确认登录成功。
这是我到目前为止所尝试的,无论我做什么,我得到的响应似乎总是“不正确”,然后ajax脚本永远不会让我登录。
到目前为止我的代码:
<?php
if (isset($_GET['email'], $_GET['password'])){
$email = $_GET['email'];
$password = $_GET['password'];
// Need a valid email address:
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
// must match specific values:
// This values will be gotten from a database
require('../mysqli_connect.php');
// retrieve from database
$q = "SELECT email, pass FROM users WHERE email = '$email'LIMIT 1";
// run the query
$r = @mysqli_query($dbc, $q);
//$check_email = "";
//$check_pass = "";
/*while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) {
$check_email = $row['email'];
$check_pass = $row['pass'];
}*/ // if the email and password match those in database
//if (($email == $check_email && $password == $check_pass)) {
if (mysqli_num_rows($r) > 0) {
echo 'CORRECT';
} else {
echo 'INCORRECT';
}
mysqli_close($dbc);
/* if(($_GET['email'] == 'email@example.com') && ($_GET['password'] == 'testpass')){
//Set a cookie, if you want, or start a session.
// indicate success:
echo 'CORRECT';
}else{// mismatch
echo'INCORRECT';
}*/
}else{ // invalid email
echo 'INVALID_EMAIL';
}
}else{ // missing one of the two variables
echo 'INCOMPLETE';
}
它包含我不同的尝试。
答案 0 :(得分:3)
首先,出于安全原因,我绝不会使用GET提交密码。 要检查,如果密码正确,我建议使用php函数password_hash()和password_verify()来存储密码而不是纯文本。
但要回答您的原始问题:要查看查询的错误,只需删除&#34; @&#34;在您的查询前签名。我还会在&#34; LIMIT&#34;之前添加一个空格。言。
如果仍然无法正常工作,请尝试获取mysqli错误并发布。
祝你好运:)答案 1 :(得分:1)
您只需检查email
,但还要检查password
字段
如果email
是正确的,那么user
将使用wrong password
尝试此查询
$q = "SELECT email, pass FROM users WHERE email = '$email' and password = '$password' LIMIT 1";
在space
和$email
之间和LIMIT
或强>
从@
移除mysqli_query
,以便更好地了解error
答案 2 :(得分:0)
您没有显示HTML,但我会尝试回答您给我的内容。
在'$email'
和LIMIT
确保数据库中有数据。
仔细检查您在表单中设置name
属性的HTML,并确保它与$_GET[]
名称匹配。