HTML5联系表单在字段中没有任何数据提交

时间:2018-04-15 09:36:45

标签: php html5 forms dreamweaver contact

我第一次在这里发帖,如果我弄错了,请道歉。我最近从HTML5 UP模板建立了一个网站 - www.vancareleeds.co.uk。我使用了模板附带的联系表单,并在根文件夹中使用了一个简单的mail.php文件来处理要发送到我的收件箱的电子邮件。

我还加入了Google ReCaptcha,但是我很难强制表单进行验证(例如,表单可以在没有勾选reCaptcha的情况下发送,也可以在表单上的字段中发送没有信息。< / p>

我在这里提供了.php以及网页本身的代码。

如果我已经破坏了psots的协议或最佳实践,我道歉。

mail.php

<?php $name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$mobile = $_POST['mobile'];
$vehicle = $_POST['category-vehicle'];
$service = $_POST['category-service'];
$formcontent="From: $name \n Message: $message \n Mobile: $mobile \n Vehicle: $vehicle \n Service Required: $service";
$recipient = "info@vancareleeds.co.uk";
$subject = "Contact Form from VanCare Website";
$mailheader = "From: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
echo "Thank You!";
?>

表格html

<form method="post" action="mail.php">

    <div class="field">
    <label for="name">Name</label>
    <input type="text" name="name" id="name" />
    </div>
    <div class="field">
    <label for="email">Email</label>
    <input type="email" name="email" id="email" />
    </div>
    <div class="field">
    <label for="message">Message</label>
    <textarea name="message" id="message" rows="4"></textarea>
    </div>
    <div class="g-recaptcha" data-theme="dark" class="g-recaptcha" data-sitekey="6Lf1OVMUAAAAAJv1fNtt-CJEFPK-Q0Ugc1CVCRVh"></div><br/>
    <ul class="actions">
    <li><input type="submit" value="Send Message" /></li>
    </ul>                       
</form>

1 个答案:

答案 0 :(得分:0)

欢迎+加泰罗尼亚足球!如果您是PHP新手,我建议您使用var_dump()print_r()var_export() $_POST全局数组的结果来查看发送到PHP脚本的内容。如果您有信心,可以注释掉所有其他内容并取消注释。

$errors = [];

if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['name'], $_POST['email'], $_POST['message']) === true) {
    $name = filter_var(trim($_POST['name']), FILTER_SANITIZE_STRING);

    if (empty($name) === true) {
        $errors['name'][] = 'Name is empty';
    } elseif (ctype_alpha($name) === false) {
        $errors['name'][] = 'Name contains invalid characters';
    }

    $email = filter_var(trim($_POST['email']), FILTER_SANITIZE_EMAIL);

    if (empty($email) === true) {
        $errors['email'][] = 'E-mail is empty';
    } elseif ($email === false) {
        $errors['email'][] = 'Invalid e-mail address';
    }

    $message = strip_tags(trim($_POST['message']));

    if (empty($message) === true) {
        $errors['message'][] = 'Message is empty';
    }

    if (count($errors) === 0) {
        echo 'Thank you!';
        // you can use here the sanitized user input to send the e-mail
    }
}

if (count($errors) > 0) {
    foreach ($errors as $field => $messages) {
        echo implode(', ', $messages), '<br>';
    }
}

这将测试用户输入并打印出错误信息。