2010-12-13 12 views
0

私は今、名前、電話番号、電子メール、コメントなどの簡単な入力フィールドを持つフォームを用意しています。私emailMonthlySpecials.phpでフォームを送信したときにページを更新してエラーメッセージを表示するにはどうすればよいですか?

<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> 

私は、次のコードを持っている:

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

を試してみましたそして、それは...任意のアイデアを仕事didntの?あなたが呼び出し元にリダイレクトしたい場合は、あなたがこれを記述する必要が

+0

エラー時にリフレッシュしない –

+0

空白ページに移動しないようにするにはどうすればよいですか?なぜなら、私はそれをどこにでも置かないと、空白のページに行きますが、それでも正しく電子メールを送ります。 – Chris

+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変数にメッセージを保存する必要があります。

+0

'フォームを表示するページにもフォームが送信される場所を持っていますか? - フォームのアクションを空白のままにしてください。 –

+0

ありがとうございます!それが送信されたことを確認するために私は何を書きますか? (送信フォーム) – Chris

+0

送信ボタンに 'name'属性(つまり、 array_key_exists( 'send_email'、$ _POST)){} – RDL

-2

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

彼らはまだ元のページに戻ってもエラーメッセージが必要です。 – RDL

関連する問題