2016-12-31 21 views
3

私はphpを使用して連絡先フォームを作成しようとしていて、いくつかの問題があります。

条件:isset($_POST['submit'])は、空白のページを送信しても常にfalseを返します。

contact.html部分:ここ

は私のコードです

<form action='emailto.php' method='POST' enctype='text/plain'> 
First Name:<br> 
<input type='text' name='firstname'><br> 
Last Name:<br> 
<input type='text' name='lastname'><br> 
Email Address:<br> 
<input type='text' name='emailadd' ><br> 
Subject:<br> 
<input type='text' name='subject' ><br> 
Message:<br> 
<textarea name='message' rows=5 cols=30 ></textarea><br><br> 
<input type='submit' value='Send' name='submit'> 
</form> 

emailto.php:

<?php 
if (isset($_POST['submit'])) { 
$to = "emailaddress"; 
$subject = $_POST['subject']; 
$firstname = $_POST['firstname']; 
$lastname = $_POST['lastname']; 
$Emailadd = $_POST['emailadd']; 
$Message = $_POST['message']; 
$Body= ""; 
$Body .= $firstname; 
$Body .= $lastname; 
$Body .= "\n"; 
$Body .= $Emailadd; 
$Body .= "\n"; 
$Body .= $Message; 
mail($to,$subject,$Body); 
echo "Mail Sent! <a href='contact.html'>Go Back</a>"; 
} else { 
header("Location: contact.html"); 
exit(0); 
} 
?> 

のほかに、どのような奇妙なのは、私がもし-else文を削除した場合ということですemailto.phpの に送信した後、エラーメッセージが表示されます。未分類のインデックス:件名、名字、姓、メールアドレス、メッセージ...

私は完全に混乱していました。 いくつかのアドバイスを楽しみにしています。 ありがとうございます。

+0

また、空の文字列(空のPOSTデータフィールドなど)として定義された変数の場合、 'isset()'がtrueを返すことにも注意してください。 –

答えて

2

フォームからこのenctype='text/plain'を削除すると、作業が開始されます。 私はそれを保証します。それが失敗した場合は、その理由を調べ、メールが利用できるようにする必要があります。

サイドノート:入力が空であるかどうかを確認する必要があります(また、役立つrequired)。

mail()のために適切な(フル)ヘッダーを使用:

をそれ以外の場合は、お使いのトランスポート、移動はスパムとして処理することができるか、完全に拒否。

メールの第4引数の一部として有効なFrom: <email>があるはずです。

I.e.そして、マニュアルから:

<?php 
$to  = '[email protected]'; 
$subject = 'the subject'; 
$message = 'hello'; 
$headers = 'From: [email protected]' . "\r\n" . 
    'Reply-To: [email protected]' . "\r\n" . 
    'X-Mailer: PHP/' . phpversion(); 

mail($to, $subject, $message, $headers); 
?> 

「のほかに、どのような奇妙なのは、私が提出した後、emailto.php中のif-else文を削除した場合、エラーメッセージが発生することです:undifinedインデックス:件名、FIRSTNAME 、姓、再びメッセージ...」

  • 、emailadd。これは、enctype='text/plain'がPOST配列を使用するための有効なenctypeではない形式であるために発生します。

編集:

mail()if/elseを追加します。"ヒューストンには問題があります"が表示されたら、問題が発生します。

エコーした場合"Mail Sent!"メールが届かない場合は、あなたのスパムボックスを見てください。メールは仕事をしており、なぜそれが送信/受信されなかったのかを知る必要があります。

<?php 
if (isset($_POST['submit'])) { 
$to = "emailaddress"; 
$subject = $_POST['subject']; 
$firstname = $_POST['firstname']; 
$lastname = $_POST['lastname']; 
$Emailadd = $_POST['emailadd']; 
$Message = $_POST['message']; 
$Body= ""; 
$Body .= $firstname; 
$Body .= $lastname; 
$Body .= "\n"; 
$Body .= $Emailadd; 
$Body .= "\n"; 
$Body .= $Message; 

if(mail($to,$subject,$Body)){ 
echo "Mail Sent! <a href='contact.html'>Go Back</a>"; 
} else { echo "Houston, we have a problem"; } 

} else { 
header("Location: contact.html"); 
exit(0); 
} 
?> 
+2

ようなもの:http://stackoverflow.com/questions/7628249/method-post-enctype-text-plain-are-not-compatible – Progrock

+0

@Progrockはい。しかし、私はそれらを助けるために私の答えにいくつかのものを追加しました。うまくいけば、すべてがうまく行き、意図どおりになるでしょう。 –

+0

THX!本当に役に立つ! –

関連する問題