首页 > 解决方案 > 提交时的 PHP 联系表单验证

问题描述

所以交易是这样的:验证过程在用户点击提交后开始。但是由于某种原因,代码无法正常工作。

PHP:

if ($_POST['submitted']) {
    if(!filter_var($email, FILTER_VALIDATE_EMAIL))
        my_contact_form_generate_response("error", $email_invalid);
    else //email is valid
    {
        //validate presence of name and message
        if (empty($name) || empty($message)) {
            my_contact_form_generate_response("error", $missing_content);
        } else //ready to go!
        {
            $sent = wp_mail($to, $subject, strip_tags($message), $headers);
            if ($sent) my_contact_form_generate_response("success", $message_sent); //message sent!
            else my_contact_form_generate_response("error", $message_unsent); //message wasn't sent
        }
    }
} else {
    $response = "";
}

HTML:

<form action="<?php the_permalink(); ?>" class="contact" method="post">
                        <input type="text" placeholder="Your Name" name="message_name" value="<?php echo esc_attr($_POST['message_name']); ?>">
                        <input type="text" placeholder="Your Email" name="message_email" value="<?php echo esc_attr($_POST['message_email']); ?>">
                        <input type="text" placeholder="Your Company" name="message_company" value="<?php echo esc_attr($_POST['message_company']); ?>">
                        <textarea name="message_text" rows="10" placeholder="Your Message"><?php echo esc_textarea($_POST['message_text']); ?></textarea>
                        <button type="submit" class="contact-button" name="submitted">Submit</button>
                    </form>
                    <?php echo $response ?>

编辑:对不起,我忘了添加我帖子的最后一部分,我提到的是 PHP 脚本应该在我点击提交按钮的那一刻工作。但是 if ($_POST['submitted']) {} 不会被我的提交按钮触发。我想知道为什么会这样?

标签: phphtmlcontact-form

解决方案


对我来说,您似乎没有将变量分配给 POST 元素。

如果您在第一个片段中替换为$email$_POST['message_email']$name$_POST['message_name']您可能会发现更好的运气。$message$_POST['message_text']

无论如何,我可以在这个片段中看到很多未使用的变量,包括$headers$to$subject以及在my_contact_form_generate_*. 确保这些也已设置。


推荐阅读