0

我正在尝试为我的网站实施“重置密码”页面。到目前为止,我有一个简单的页面,其中有一个表单供用户输入他们的电子邮件地址。提交表单会调用“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';

我想知道如何执行以下操作:

如果用户输入了无效的电子邮件地址,表单将保持可见并显示错误消息。

如果请求成功,表单将被隐藏,并会显示一条消息,如“成功”。

在任何一种情况下,重定向到新页面似乎都是不必要/不好的做法?而不仅仅是更新当前的。

4

4 回答 4

0

如果出现错误,您只需输出相同的 HTML,并从您的 PHP 脚本中添加错误消息。如果成功,您可以将它们重定向到其他地方,或者将它们保留在您认为合适的同一页面上。我可能会将他们带回登录表单,并亲自添加成功消息,以便他们在收到您的电子邮件后轻松登录。

于 2012-09-28T14:51:24.443 回答
0

为什么不尝试将表单提交到同一页面?然后

if (isset($_POST['email']) /** and user exists **/) {
  /** do whatever you need to do **/
} else {
  /** display the form **/
}
于 2012-09-28T14:51:47.577 回答
0

重定向或以其他方式进行发并不是坏习惯。您正在寻找的解决方案称为 AJAX,两种解决方案同样可行。您可以使用 javascript (可能还有jquery)来查询服务器,然后根据服务器的响应隐藏表单/给出错误消息。

如果这是您的问题,您将无法验证或发送电子邮件,而无需仅以 html 和 php 回发。

于 2012-09-28T14:53:32.567 回答
-2

你可以这样做:

在你的 php 代码上:

如果(电子邮件错误) echo"window.location.href='yourformpage.php?email=wrong'"; 否则 doStuff();

并在您的表单页面中:

if(isset($_GET['email']) AND $_GET['email'] == '错误')

echo "显示错误信息";

于 2012-09-28T14:54:17.203 回答