Ajax提供的结果与php服务器端不同

时间:2016-04-26 11:33:23

标签: php jquery ajax

好的,我有这个PHP代码:

$_you = $_GET['you'];
$_answer = $_GET['answer'];
$_pass = md5($_GET['pass']);
$sql = "select password from users where username='$_you'";
$query = mysqli_query($db_conx, $sql);
while ($row = mysqli_fetch_array($query)) {
    $_oldpass = $row['password'];
}
if ($_pass !== $_oldpass) {
    $_passresult = "not ok";
} else {
    $_passresult = "ok";
}
$sql2 = "select answer from useroptions where username='$_you'";
$query2 = mysqli_query($db_conx, $sql2);
while ($row2 = mysqli_fetch_array($query2)) {
    $_veranswer = $row2['answer'];
}
if ($_answer !== $_veranswer) {
    $_answerresult = "not ok";
} else {
    $_answerresult = "ok";
}
$_result = array("Password" =>$_passresult, "Answer" =>$_answerresult);
header("Content-Type: application/json");
echo json_encode($_result);

?>

这个jquery的片段(片段)调用上面的php:

$.get("verifydp.php?u="+you+"&pass="+pass+"&answer="+answer, function(result) {
    if (result.Password === "not ok" ) {
        $('#requiredp').html('<i class="fa fa-exclamation-triangle" aria-hidden="true"></i> Password is not correct');
        $('#cpassword').css("border", "solid 1px #f60");
        $('#cpassword').focus();
        $('#cpassword').val('');
        return false;
    } else {
        $('#requiredp').html('');
        $('#cpassword').css("border", "solid 1px #ccc");
    }
    if ( result.Answer === "not ok" ) {
        $('#requireda').html('<i class="fa fa-exclamation-triangle" aria-hidden="true"></i> This is not the correct answer.');
        $('#answer').css("border", "solid 1px #f60");
        $('#answer').focus();
        $('#answer').val('');
        return false;
    } else {
        $('#requireda').html('');
        $('#answer').css("border", "solid 1px #ccc");
    }   
});

正如您可能已经猜到的那样,这是我制作的一个小密码验证内容,它还没有完成,所以不要提及它不是100%安全的事实然而。只是想请求您帮助解决以下这两个代码之间相互作用的显着问题:

验证密码和答案是否正确或不正确,但是,当我输入正确的密码时,它会打消我说密码不正确。然而有趣的是,当我使用相同的数据自己运行php部分时,它告诉我密码是正确的。 所以php提供了一个&#34; OK&#34; Ajax和Ajax以某种方式将它变成了一个不正常的#34;然后在其余的脚本动作中导致相应的混乱。有人知道为什么会这样吗?任何帮助都非常感谢,因为它正在努力: - / 如果您需要更多信息,请告诉我。

万分感谢!

1 个答案:

答案 0 :(得分:4)

我只是会忽略这是多么不安全,只因为你说过。

所以,继续前进。 Ajax不以任何方式操纵数据。 Ajax只是一种&#34;方式&#34;为您的网页异步访问网络服务器并获取一些数据。

这不起作用的原因和密码总是&#34;不好&#34;是因为你的PHP期望用户名在GET参数中,但你是在GET参数 u 中发送它。