2010-12-13 47 views
0

我现在所拥有的是一个带有简单输入字段的表单,例如姓名,电话号码,电子邮件和评论。如何在提交表单并刷新错误信息时刷新页面?

<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"]); 

而且它没有工作..任何想法?

+0

请勿刷新错误 – 2010-12-13 22:05:54

+0

如何阻止它进入空白页?因为如果我不直接指向某个地方,它只是进入一个空白页面,但仍然可以正常发送电子邮件 – Chris 2010-12-13 22:07:56

+0

不要显示空白页面,而是显示填充表单的相同页面。将它全部放在同一页 – 2010-12-13 22:10:34

回答

1

有一个显示形式也可以在表单提交页面。那就是如果出现错误,页面可以继续并再次显示表单。即。

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变量在携带它到其他页面。

+0

'有显示表单的页面也是提交表单的地方' - 这样做,只是将表单的行为留为空白 – 2010-12-13 22:14:42

+0

谢谢!我会写什么来确保它被发送?在这个区域:if([form submitted]) – Chris 2010-12-13 22:17:35

+0

给提交按钮一个'name'属性(即然后检查:if array_key_exists('send_email',$ _POST)){} – RDL 2010-12-13 22:27:15

-2

如果你想回重定向到主叫方,那么你必须这样写:

header("Location: ".$_SERVER["REQUEST_URI"]); 
+0

尽管它们仍然需要在原始页面上返回错误消息。 – RDL 2010-12-13 22:13:45