当用户使用用户名和密码填写登录表单时,我使用php通过将数据与SQL数据库中“users”表中的数据进行比较,对输入的数据进行服务器端验证。我想在没有重定向的情况下通知用户密码是否正确 - 例如,使用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使用?
答案 0 :(得分: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中,并在表单所在的页面中使用上述代码。你已经完成了。
答案 1 :(得分: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.";
答案 2 :(得分:0)
您可以对服务器进行Ajax调用,并允许用户根据服务器返回的结果登录或显示错误消息。