0

簡単な問い合わせフォームを設定しましたが、仕上げに少し問題があります。フォームが送信されるたびにエラー メッセージが表示されます。誰かが私のコードを見て、間違いを指摘してくれることを願っていました。ありがとう!

(編集済み) フォームが送信されると、成功 (contactthanks.php) ページではなくエラー ページ (error.html) にリダイレクトされるというエラーについて言及するのを忘れていました。

HTML:

<form method="post" action="contactengine.php">
<label for="Name">Name:</label>
<input type="text" name="Name" id="Name" />

<label for="City">City:</label>
<input type="text" name="City" id="City" />

<label for="Email">Email:</label>
<input type="text" name="Email" id="Email" />

<label for="Message">Message:</label><br />
<textarea name="Message" rows="20" cols="20" id="Message"></textarea>

<input type="submit" name="submit" value="Submit" class="submit-button" />
</form>

PHP:

<?php

$EmailFrom = "";
$EmailTo = "MYEMAIL@gmail.com";
$Subject = "";
$Name = Trim(stripslashes($_POST['Name'])); 
$Tel = Trim(stripslashes($_POST['Tel'])); 
$Email = Trim(stripslashes($_POST['Email'])); 
$Message = Trim(stripslashes($_POST['Message'])); 


$validationOK=true;
if (!$validationOK) {
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.html\">";
exit;
}


$Body = "";
$Body .= "Name: ";
$Body .= $Name;
$Body .= "\n";
$Body .= "Tel: ";
$Body .= $Tel;
$Body .= "\n";
$Body .= "Email: ";
$Body .= $Email;
$Body .= "\n";
$Body .= "Message: ";
$Body .= $Message;
$Body .= "\n";


$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");

if ($success){
print "<meta http-equiv=\"refresh\" content=\"0;URL=contactthanks.php\">";
}
else{
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.html\">";
}
?>
4

2 に答える 2

1
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");

if ($success){
print "<meta http-equiv=\"refresh\" content=\"0;URL=contactthanks.php\">";
}
else{
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.html\">";
}

mailへの呼び出しが戻ってきたため(電子メールの配信が受け入れられなかったことを示す)、エラーページにリダイレクトされます。これは、falseまさにその状況で行うように指示していることです。

サーバーに設定されているSMTPを確認する必要があります。

通常、チェックする設定はPHP.iniファイルにありますsendmail_fromsendmail_pathすでにFromヘッダーを設定しているので、sendmail_path正しく設定されていない可能性があります。

于 2012-12-17T08:29:02.413 に答える
0

問題の原因を確認してください

ini_set("display_errors", "1"); 
error_reporting(E_ALL);`. 

私の推測では、SMTP設定が間違っていて、mail機能が失敗していると思います。

于 2012-12-17T08:27:36.823 に答える