如何在提交表单并刷新错误信息时刷新页面?
问题描述:
我现在所拥有的是一个带有简单输入字段的表单,例如姓名,电话号码,电子邮件和评论。如何在提交表单并刷新错误信息时刷新页面?
<div id="specialsForm"><h3>Interested in this coupon? Email us! </h3>
<form method="post" action="emailMonthlySpecials.php">
Name: <input name="name" type="text" /><br />
Email: <input name="email" type="text" /><br />
Phone Number: <input name="phone" type="text" /><br /><br />
Comment: <br/>
<textarea name="comment" rows="5" cols="30"></textarea><br /><br />
<input type="submit" value="Submit Email"/>
</form></div>
在我emailMonthlySpecials.php我有以下代码:
$name = $_REQUEST['name'] ;
$email = $_REQUEST['email'] ;
$phone = $_REQUEST['phone'] ;
$comment = $_REQUEST['comment'] ;
if(!empty($name) && (!empty($email) || !empty($phone))) {
mail("[email protected]", "Monthly Specials Email",
"Name: $name
Email: $email
Phone Number: $phone
Comment: $comment", "From: $email");
} else {
echo '<span class="error">A name, comment, phone number/email is required</span><br />';
};
它去到一个新的页面,并显示错误(如果有的话),如果不是去一个空白页(我知道如何让它进入一个感谢页面,但它需要保留在当前页面上)它可以将信息发送到电子邮件。
我已经试过
header("Location: ".$_SERVER["PHP_SELF"]);
而且它没有工作..任何想法?
答
有一个显示形式也可以在表单提交页面。那就是如果出现错误,页面可以继续并再次显示表单。即。
contact.php(伪代码)
<?
if ([form submitted]) {
if ([fields filled out correctly]) {
[send mail]
header('location: thankyou.php');
} else {
$error = 'error message';
}
}
?>
<span class="error"><?=$error;?></span>
<form method="post" action="contact.php">
[field]
</form>
您也可以使用重定向,但你需要将信息存储在$_SESSION变量在携带它到其他页面。
答
如果你想回重定向到主叫方,那么你必须这样写:
header("Location: ".$_SERVER["REQUEST_URI"]);
+0
尽管它们仍然需要在原始页面上返回错误消息。 – RDL 2010-12-13 22:13:45
请勿刷新错误 – 2010-12-13 22:05:54
如何阻止它进入空白页?因为如果我不直接指向某个地方,它只是进入一个空白页面,但仍然可以正常发送电子邮件 – Chris 2010-12-13 22:07:56
不要显示空白页面,而是显示填充表单的相同页面。将它全部放在同一页 – 2010-12-13 22:10:34