php表单一直给我500错误

时间:2015-01-19 00:00:51

标签: php html forms contact-form

我无法让联系表单正常工作。我是php新手,这是我创建的第一个邮件程序,所以我绝对可以使用一些帮助。

这是我的HTML表单

        <form id="ajax-contact" method="post" action="mailer.php">
            <div class="column">
                <label for="name">name</label>
                <input type="text" id="name" name="name" required>
                <label for="email">email address</label>
                <input type="email" id="email" name="email" required>
            </div>

            <div class="column">
                <label for="message">message</label>
                <textarea id="message" required></textarea>
            </div>

            <button type="submit">Send</button>
        </form>

这是我的mailer.php

<?php
    // My modifications to mailer script from:
    // http://blog.teamtreehouse.com/create-ajax-contact-form
    // Added input sanitizing to prevent injection


    // Only process POST reqeusts.
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        // Get the form fields and remove whitespace.
        $name = strip_tags(trim($_POST["name"]));
$name = str_replace(array("\r","\n"),array(" "," "),$name);
        $email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL);
        $message = trim($_POST["message"]);


        // Check that data was sent to the mailer.
        if ( empty($name) OR empty($message) OR !filter_var($email, FILTER_VALIDATE_EMAIL)) {
            // Set a 400 (bad request) response code and exit.
            http_response_code(400);
            echo "Oops! There was a problem with your submission. Please complete the form and try again.";
            exit;
        }


        $recipient = "thomas.lacroix.e@gmail.com";


        $subject = "New message from $name";


        $email_content = "Name: $name\n";
        $email_content .= "Email: $email\n\n";
        $email_content .= "Message:\n$message\n";


        $email_headers = "From: $name <$email>";


        // Send the email.
        if (mail($recipient, $subject, $email_content, $email_headers)) {
            // Set a 200 (okay) response code.
            http_response_code(200);
            echo "Thank You!";
        } else {
            // Set a 500 (internal server error) response code.
            http_response_code(500);
            echo "Oops! Something went wrong.";
        }


    } else {
        // Not a POST request, set a 403 (forbidden) response code.
        http_response_code(403);
        echo "There was a problem with your submission, please try again.";
    }
?>

我搜索过类似问题的人,我相信我需要添加一些电子邮件主机设置。说实话,我不知道我在做什么。非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

在您的表单上,您似乎忘记包含textarea的名称,该名称在尝试获取时会在代码中导致未定义的索引

$_POST['message']

<textarea name="message" id="message" required></textarea>

执行上述操作解决了我的测试问题。