簡體   English   中英

HTML表單與提交到php。 顯示PHP響應

[英]HTML form with submit to php. Displaying php response

我正在嘗試為我的網站實施“重置密碼”頁面。 到目前為止,我有一個簡單的頁面,其中包含供用戶輸入其電子郵件地址的表單。 提交表單調用“ requestpasswordreset.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';

我想知道我該怎么做:

如果用戶輸入了無效的電子郵件地址,則該表格將保持可見狀態並顯示錯誤消息。

如果請求成功,則該表單將被隱藏,並顯示一條消息,例如“成功”。

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

如果有錯誤,您只需輸出相同的HTML,並從PHP腳本中添加一條錯誤消息。 如果成功,則可以將它們重定向到其他位置,或者將它們保持在您認為合適的同一頁上。 我可能會將他們帶回登錄表單,並添加一條成功消息,以便他們在收到您的電子郵件后可以輕松登錄。

您為什么不嘗試將表單提交到同一頁面? 然后

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

重定向或以其他方式進行回發都不是壞習慣。 您正在尋找的解決方案稱為AJAX,這兩種解決方案同樣可行。 您可以使用javascript(可能還有jquery )來查詢服務器,然后根據服務器的響應隱藏表單/給出錯誤消息。

如果這是您的問題,那么只有在HTML和php中沒有回發的情況下,您才能驗證或發送電子郵件。

你可以做這樣的事情:

在您的php代碼上:

如果(電子郵件錯誤)echo“ window.location.href ='yourformpage.php?email = wrong'”; 其他doStuff();

並在您的表單頁面中:

if(isset($ _ GET ['email'])AND $ _GET ['email'] =='錯誤')

回顯“顯示錯誤消息”;

暫無
暫無

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

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