2012-04-17 17 views
1

私は非常に単純な、しかし、このフォームで動作する効果的なPHPのフォームハンドラを必要とする:PHPコンタクトフォームハンドラが動作しませんか?

<form id="contact" method="post" action="contact_handle.php"> 
<label for="name">Name:</label> 
<input type="text" class="text_style" placeholder="John Doe" name="name" /><br /> 
<label for="email">Email:</label> 
<input type="email" class="text_style" placeholder="[email protected]" name="email" /><br /> 
<label for="message">Subject:</label> 
<textarea class="areawidth" rows="4" name="message" /></textarea><br /> 
<button id="contactbutton" type="submit">Submit</button> 
</form> 

これは私が現在持っているものですが、それは電子メールを送信していないと私は意図したように、それはリダイレクトされません。 。そして、私は何が起こっているのか把握しているようです。

<?php 
$invalid = ''; 
$my_email = '[email protected]'; 

// Validate input: 
if(empty($_POST['name']) || 
    empty($_POST['email']) || 
    empty($_POST['message'])) 
{ 
    $invalid.= "\n All fields are required"; 
} 
$name = $_POST['name']; 
$email = $_POST['email']; 
$message = $_POST['message']; 

// Validate email: 
if (!preg_match(
"/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i", 
$email)) 
{ 
    $invalid .= "\n Invalid email address"; 
} 

// Send email if no errors detected: 
if(empty($invalid)) 
{ 
$to = $my_email; 
$subject = "Contact form submission: $name"; 
$body = "You have received a new message. ". 
" Here are the details:\n Name: $name \n ". 
"Email: $email\n Message:\n $message"; 
$headers = "From: $email\n"; 
$headers .= "Reply-To: $email"; 
mail($to,$subject,$body,$headers); 

//redirect to the thank you page:  
header('Location: contact_thanks.php'); 
} 
?>  

投稿されると、contact_handle.phpに空白が表示され、リダイレクトに失敗します。

+0

ローカルホストまたはライブサーバーでこれをテストしていますか?エラーメッセージが表示されますか? –

+0

フォームハンドラの10行目にタイプミスがあるようです。エラーメッセージを '$ error'変数に格納していますが、残りのコードでは' $ invalid'とするべきでしょう。 – Indrek

+0

おっと、入力ミスを修正しました。私はローカルホストとライブサーバーの両方でテストしましたが、いずれも動作しませんでした。エラーメッセージは表示されません。空白の画面と電子メールなし。 –

答えて

1

私は、リダイレクトがブラウザに最初に出力することがあると思いますので、何か他のものが出力されるがある場合、それは動作しません

なぜドン」。あなたはそれにリダイレクトするのではなく、あなたに感謝のページを入れるだけです。すなわち、

include 'contact_thanks.php'; 
+0

これは、フォームの仕事を作った!ありがとうございました!私は最初にこれをしていたはずです。簡単なインクルードがはるかに簡単なので、私はすでにPHPでテンプレート化された私のウェブサイトを持っています。申し訳ありませんが私はあなたを投票することはできません、私はまだ十分なポイントがありません。 –

+0

問題なし、喜んで助けになるでしょう。 – jx12345

1

あなたは、コードのすべてを提供している場合は、問題があなたのフォームが$invalidにテキストを追加することによって、(エラーを投げているが、空であること$invalidないを処理するコードがないということである。これを解決するために、追加しますこれは、最後の決算}後:

echo $invalid; 
+0

ありがとうございます、フォームにエラーがあれば表示されます。簡単な間違いは気付いてはいけません。 –