簡體   English   中英

服務器端驗證,客戶端通知?

[英]Server-side validation, client-side notification?

當用戶使用用戶名和密碼填寫登錄表單時,我使用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使用的結果?

可以使用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中,並在表單所在的頁面中使用上述代碼。 你完成了。

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.";

您可以對服務器進行Ajax調用,並允許用戶根據服務器返回的結果登錄或顯示錯誤消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM