如何在提交表单时刷新页面&给出错误信息?

时间:2010-12-13 22:02:27

标签: php email refresh action

我现在所拥有的是一个包含简单输入字段的表单,例如姓名,电话号码,电子邮件和评论。

<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("my.email@hotmail.com", "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"]);

它没有用......有什么想法吗?

2 个答案:

答案 0 :(得分: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变量中以将其传输到另一页。

答案 1 :(得分:-2)

如果要重定向回调用者,则必须写下:

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