自行提交 PHP 表单验证

Self Submit PHP Form Validation

我已经制作了一个 PHP 表单来提交给自己并进行了错误验证,但是表单没有提交。这个想法是,当用户点击 提交 按钮并且没有填写所有必填字段或他们输入的电子邮件地址有缺陷时,通过添加错误 class 按 CSS 排序。 CSS 没问题,但表单未提交。我将不胜感激。

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Email</title>
    </head>
    <body>
    <?php
        $error = '';
        $to = "name@example.com";

        if ($_SERVER["REQUEST_METHOD"] == "POST") {
            if (empty($_POST["name"]) || empty($_POST["email"]) || empty($_POST["message"])) {
                $error = 'class="error" ';
            } else {
                $name = stripslashes(trim($_POST["name"]));
                $email = stripslashes(trim($_POST["email"]));
                $message = stripslashes(trim($_POST["message"]));
                $pattern = '/[\r\n]|Content-Type:|Bcc:|Cc:/i';

                if (preg_match($pattern, $name) || preg_match($pattern, $email)) {
                    $error = 'class="error" ';
                }

                $emailIsValid = filter_var($email, FILTER_VALIDATE_EMAIL);

                if ($name && $email && $emailIsValid && $message) {
                    $subject = "From $name";
                    $body = "Name: $name <br /> Email: $email <br /> Message: $message";

                    $headers = "Reply-To: $email";

                    $success = mail($to, $subject, $body, $headers);
                    if ($success) {
                        header("Location: /email/sent/");
                    } else {
                        header("Location: /error/");
                    }
                }
            }
        }
        ?>

        <form method="post" action="<?php echo htmlspecialchars($_SERVER["REQUEST_URI"]); ?>">
            <input <?php echo $error; ?>type="text" name="name" placeholder="Full Name" spellcheck="false">
            <input <?php echo $error; ?>type="text" email="email" placeholder="Email Address" spellcheck="false">
            <textarea <?php echo $error; ?>type="text" message="message" placeholder="Message" rows="6" spellcheck="false"></textarea>
            <button type="submit" name="submitted">submit</button>
        </form>
    </body>
</html>

注意: 您的表单中有拼写错误 tag.you 在双引号中使用了双引号。

代替使用这个

<form method="post" action="<?php echo htmlspecialchars($_SERVER["REQUEST_URI"]); ?>">
and
if ($_SERVER["REQUEST_METHOD"] == "POST") {

使用

<form method="post" action="<?= $_SERVER['PHP_SELF'] ?>">
and
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['submitbutton'])) {
//SO IT WILL PERFORM ONLY WHEN SUBMIT BUTTON WAS PRESSED

更多你可以学习它here

或者还有Live Demo可用