2012-09-28 64 views
0

我正在嘗試爲我的網站實施「重置密碼」頁面。到目前爲止,我有一個簡單的頁面,用戶可以輸入他們的電子郵件地址。提交表單調用「requestpasswordreset.php」這做的事情,例如檢查是否存在與該電子郵件地址的用戶,發送密碼重置電子郵件等進行HTML表單。顯示php響應

<body> 
<form name="input" action="requestpasswordreset.php" method="post"> 
    Email Address: <input type="text" name="email"> </br> 
    <input type="submit" value="Submit"></form> 
</body> 

requestpasswordreset.php僞

if no user with email = $_POST['email'] 
    echo 'No user exists with this email'; 
else 
    ... 
    doStuff(); 
    echo 'Password reset email sent'; 

我想知道我怎麼能做到以下幾點:

如果用戶輸入無效的電子郵件地址,表單將保持可見,並會顯示錯誤消息。

如果請求全成形式將被隱藏,並且會顯示一個消息,說像「成功」。

在這兩種情況下,似乎將不必要/不好的做法重定向到新頁面?而不僅僅是更新當前版本。

回答

0

這不是不好的做法,重定向或以其他方式作出postback,在所有。您正在尋找的解決方案稱爲AJAX,兩種解決方案同樣可行。您可以使用javascript(也可能是jquery)來查詢服務器,然後根據服務器響應隱藏表單/給出錯誤消息。

您無法驗證或發送電子郵件,而不回發只在HTML和PHP,如果這是你的問題。在你的PHP代碼

0

如果出現錯誤,您只需輸出相同的HTML,並在PHP腳本中添加錯誤消息。如果成功,您可以將它們重定向到其他地方,或者將它們保留在您認爲合適的頁面上。我可能會將它們帶回到登錄表單中,一旦他們收到您的電子郵件,便會自動添加成功消息以方便登錄。

0

你爲什麼不嘗試提交表單到同一頁面?然後

if (isset($_POST['email']) /** and user exists **/) { 
    /** do whatever you need to do **/ 
} else { 
    /** display the form **/ 
} 
-1

你可以做財產以後這樣的

如果(電子郵件是錯誤的) 回聲「window.location.href = '?yourformpage.php電子郵件=錯誤' 「;其他 doStuff();

,並在你的表單頁面:

如果(isset($ _ GET [ '郵件'])與$ _GET [ '電子郵件'] == '錯誤')

回聲「顯示錯誤信息」;

+0

window.location.href不是php。 –