0

お問い合わせフォームを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

私が間違っていることはありますか?名前とメッセージは機能するのにメールが機能しないのはなぜですか?

ありがとう

4

1 に答える 1

1

これは間違っています:

<input type="text" email="email_address" id="email_address">

これに変更します。

<input type="text" name="email_address" id="email_address">
于 2013-08-17T02:49:26.373 に答える