我正在尝试为我的网站实施“重置密码”页面。到目前为止,我有一个简单的页面,其中有一个表单供用户输入他们的电子邮件地址。提交表单会调用'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';
我想知道如何做到以下几点:
如果用户输入了无效的电子邮件地址,表单将保持可见状态,并显示错误消息。
如果请求成功,表单将被隐藏,并会显示一条说“成功”的消息。
在任何一种情况下,重定向到新页面似乎都是不必要/不好的做法?而不只是更新当前的。
答案 0 :(得分:0)
如果出现错误,您只需输出相同的HTML,并在PHP脚本中添加错误消息。如果成功,您可以将它们重定向到其他位置,或者将它们保存在您认为合适的同一页面上。我可能会将它们带回登录表单,并添加一条成功消息,以便在您收到该电子邮件后轻松访问登录。
答案 1 :(得分:0)
为什么不尝试将表单提交到同一页面?然后
if (isset($_POST['email']) /** and user exists **/) {
/** do whatever you need to do **/
} else {
/** display the form **/
}
答案 2 :(得分:0)
重定向或以其他方式制作postback的做法并不错。您正在寻找的解决方案称为AJAX,两种解决方案同样可行。您可以使用javascript(可能jquery)查询服务器,然后隐藏表单/根据服务器响应给出错误消息。
如果这是您的问题,则无法在html和php中验证或发送没有回发的电子邮件。
答案 3 :(得分:-2)
你可以这样做:
在您的PHP代码上:
if(电子邮件错误) 回声 “window.location.href = 'yourformpage.php电子邮件=错了吗?'” 其他 doStuff();
并在您的表单页面中:
if(isset($ _ GET ['email'])AND $ _GET ['email'] =='wrong')
echo“显示错误消息”;