PHPの電子メールスクリプトについて何千もの質問がありますが、まだ私の答えは見つかりませんでした。私はPHPのウェブサイトを見たが、それは本当に助けていない。PHPの電子メールスクリプトが検証後に機能しない
基本的に私のスクリプトは、それに応じて入力し、表示されるエラーメッセージを検証しますが、私は、スクリプトの後半部分を追加すると、ページが500エラーを表示し、電子メールの送信を処理するために。ここに私のコードです。電子メールは、現時点で正しい電子メールに設定されていませんが、私はそれが問題ではないことを知っています。
<?php include('includes/header.php');
$yourEmail = "[email protected]";
$formSubject = "Message recieved from enquiry form";
if(isset($_POST["submit"])) {
//Validate the data
function validateFormData($formData) {
$formData = trim(stripslashes(htmlspecialchars($formData)));
return $formData;
}
//check to see if inputs are empty
// create variables with form data
// wrap the data with our function
if(!$_POST['name']) {
$nameError = "Please enter your name <br />";
} else {
$name = validateFormData($_POST["name"]);
}
if(!$_POST['email'] || !preg_match("/^\[email protected]\S+$/", $email)) {
$emailError = "Please enter a valid email address <br />";
} else {
$email = validateFormData($_POST["email"]);
}
if(!$_POST['enquiry']) {
$enquiryError = "Please enter your enquiry <br />";
} else {
$enquiry = validateFormData($_POST["enquiry"]);
}
コードこの時点までは正常に動作します。
//Check to see if submit is set
//Check to make sure errors don't exist
//Send the email
// Redirect user to success.html
if (isset($_POST["submit"]) && (empty($emailError, $nameError, $enquiryError))) {
$to = $yourEmail;
$subject = $formSubject;
$headers = 'From:'. $name . "\r\n".
'Reply-To: '. $email . "\r\n".
'X-Mailer: PHP/' . phpversion();
$body =
'The person that contacted you was '.$name.'
Email: '.$email.'
URL: '.$url.'
Message: '.$enquiry.''.
mail($yourEmail, $formSubject, $body, $headers);
header("Location: success.html");
}
}
?>
これは、私はPHPは、特定の時点まで動作し、正しくエラーメッセージを表示する考慮大丈夫です確信してHTMLフォーム、です。私は多くの人が使用しないと言っているPHP_SELFを持っていることを知っていますが、エラーが存在し、電子メールが送信された場合にのみリダイレクトする場合は、ページに留まりたいと思っています。
<form id="contactForm" method="POST" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<label for="name">Name <span class="asterisk">*</span></label>
<input type="text" name="name" id="name" value="<?php echo $name;?>"tabindex="1"/>
<span class="error"><?php echo $nameError; ?></span>
<label for="email">Email <span class="asterisk">*</span></label>
<input type="email" name="email" id="email" value="<?php echo $email;?>" tabindex="2"/>
<span class="error"><?php echo $emailError; ?></span>
<span class="error"><?php echo $emailValidError; ?></span>
<label for="url">Website</label>
<input type="url" name="url" id="url" value="<?php echo $url;?>" tabindex="3"/>
<h3>Tell us about your project </h3><br />
<textarea name="enquiry" id="enquiry" tabindex="4"><?php echo $enquiry;?></textarea>
<span class="error"><?php echo $enquiryError; ?></span>
<button type="submit" id="submit" name="submit" value="submit" >Submit</button>
</form>
エラー500、あなたのログやエラー報告をチェックしてください。 –
'mail'関数はメールを送信したことを通知することさえできますが、宛先に到達する保証はありません。 PHP用のSMTPライブラリを使用してみてください。 –