PHP 表单一直给我 500 错误


php form keeps giving me 500 error

我在联系表格工作时遇到问题。我是 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>

这是我的邮件.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.";
    }
?>

我已经搜索了有类似问题的人,我相信我需要在我的电子邮件主机设置中添加一些东西。不过,说实话,我不知道我在做什么。任何帮助将不胜感激!

看起来在您的表单上您忘记包含文本区域的名称,这在尝试获取

$_POST['message'
] 时导致代码中出现未定义的索引
<textarea name="message" id="message" required></textarea>

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