0

当用户使用用户名和密码填写登录表单时,我使用 php 通过将输入的数据与 SQL 数据库中“用户”表中的数据进行比较来对输入的数据进行服务器端验证。如果密码不正确,我想在不重定向他的情况下通知用户 - 例如,使用 javascript 对话框。那可能吗?我发现通知用户的唯一方法是:

if ($password_given != $password_from_db) {
    echo "Wrong password."; // Dull non-html notification issued by the server
};

或者

if ($password_given != $password_from_db) {
    header('Location: index.php?page=wrongpassword'); //Need redirection
};

无论如何,这有什么不同吗?

一个 javascript 来获取输入的数据,将其发送到服务器进行处理是一个想法,但是我怎么能返回一个结果供 javascript 使用呢?

4

3 回答 3

1

可以使用 AJAX 来完成 -

<form onsubmit="return ajaxsubmit();">
...
</form>

Javascript-

function ajaxsubmit() {
    param = 'email=' + document.forms.login.email + '&' + 'pass=' + document.forms.login.pass;
    xhr = new XMLHttpRequest();
    xhr.open('POST', 'process.php', true);
    xhr.onload = function() {
        if(xhr.responseText.indexOf("Wrong")>=0) {
            //wrong password, ask user to try again
        } else {
            //correct password, redirect or do stuff.
        }
    };
    xhr.setRequestHeader('Content-type: application/x-www-form-urlencoded'); 
    xhr.send(param);
    return false;
}

您可以将服务器端验证代码保留在 process.php 中,并在表单所在的页面中使用上述代码。你完成了。

于 2013-03-16T05:53:11.157 回答
1

jQuery

$.post("test.php", $("#testform").serialize())
.done(function(data) {
  if( data=='validated')
window.location.href = "successpage.php";
else
 alert ('password dont match!');

});

php

if ($password_given != $password_from_db) 
    echo "notvalidated."; 
else
   echo     echo "validated.";
于 2013-03-16T05:54:40.267 回答
0

您可以根据服务器返回的结果对服务器进行 Ajax 调用并允许用户登录或显示错误消息。

于 2013-03-16T05:46:10.577 回答