2010-12-13 80 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