お問い合わせフォームをPHPでゼロからまとめてみました。名前とメッセージの両方のフィールドは正常に表示されますが、送信後にメール アドレスが投稿されないだけです。
<?php
if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
$posted = array(
'message' => $_POST['message'],
'name' => $_POST['name'],
'email_address' => $_POST['email_address']
);
extract($posted);
// to
$to = 'email@example.com'; // need to add ', ' for multiple recipients.
// subject
$subject = 'New message from the PHP sandbox!';
// message
$body = <<<email_body
<html>
<head>
<title>New email!</title>
<head>
<body>
<p>
You have recieved a new email from $name.
</p>
<p>
They said the following:
</p>
<p>
$message
</p>
</body>
</html>
email_body;
// headers required for sending html mail
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// additional headers
$headers .= 'To: My Name <email@example.com>' . "\r\n";
$headers .= 'From: Sandbox <sandbox@localhost>' . "\r\n";
if (mail($to, $subject, $body, $headers)) {
$status = 'Thanks for your message, we\'ll be in touch shortly!';
}
}
?>
フォームは次のとおりです。
<!doctype html>
<html lang="en">
<head>
<title>Contact Form</title>
<style>
form ul { margin: 0; padding: 0; }
form li { list-style: none; margin-bottom: 1em; }
</style>
</head>
<body>
<h1>Contact Form</h1>
<form action="" method="post">
<ul>
<li>
<label for="name">Name</label>
<input type="text" name="name" id="name">
</li>
<li>
<label for="email_address">Email</label>
<input type="text" email="email_address" id="email_address">
</li>
<li>
<label for="message">Your Message</label><br>
<textarea name="message" id="message"></textarea>
</li>
<li>
<input type="submit" value="Go!">
</li>
</ul>
</form>
<?php if(isset($status)) echo $status; ?>
</body>
</html>
表示されるエラー: Notice: Undefined index: email_address in /Users/x/Sites/learning-php/$_post/index.php 行 8
私が間違っていることはありますか?名前とメッセージは機能するのにメールが機能しないのはなぜですか?
ありがとう