PHP表单验证无法正常运行

时间:2013-11-09 17:53:37

标签: php html

我的联系表格有点问题。我认为我把一切都做对了,但我总是得到同样错误的结果。

这是我的代码:

    <?php
    if (isset($_POST['contact_name']) && isset($_POST['contact_email']) && isset($_POST['contact_message'])) {
        $contact_name = $_POST['contact_name'];
        $contact_email = $_POST['contact_email'];
        $contact_message = $_POST['contact_message'];

        if (!empty($contact_name) && !empty($contact_email) && !empty($contact_message)) {
            echo '0K!';
        } else {
            echo 'Every field is required.';
        }
    }
?>          
        <form action="contacts.php" method="POST">
            Nome:<br><input type="text" name="contact_name" maxlength="25"><br><br>
            Email:<br><input type="text" name="contact_email" maxlength="50"><br><br>
            Mensagem:<br>
            <textarea name="contact_message" rows="6" cols="30" maxlength="1000"></textarea><br><br>
            <input type="submit" value="Enviar">
        </form>

当我填写所有字段时,我得到相同的结果“每个字段都是必需的。”什么时候应该显示'OK!'。但我知道所有的领域都收到了我写的东西,因为我之前测试过。

我知道这是一个基本问题,但我无法弄明白。

3 个答案:

答案 0 :(得分:1)

试试这个:

<?php
if(isset($_POST['submit'])) {
    $contact_name = $_POST['contact_name'];
    $contact_email = $_POST['contact_email'];
    $contact_message = $_POST['contact_message'];

    if (empty($contact_name) && empty($contact_email) && empty($contact_message)) {
        echo 'Every field is required.'; //This would be the message if the field(s) are empty.
    } else {
        echo 'OK!'; //This would be the message if all the fields are filled in.
    }
}
?>          
    <form action="contacts.php" method="POST">
        Nome:<br><input type="text" name="contact_name" maxlength="25"><br><br>
        Email:<br><input type="text" name="contact_email" maxlength="50"><br><br>
        Mensagem:<br>
        <textarea name="contact_message" rows="6" cols="30" maxlength="1000"></textarea><br><br>
        <input type="submit" value="Enviar" name="submit">
    </form>

答案 1 :(得分:1)

错误是:!empty($contact_mensagem)(邮件已由halfer编辑),但实际上您有$contact_message。 我已经在我的计算机上尝试了代码,但它确实有效:

 <?php
    if (isset($_POST['contact_name']) && isset($_POST['contact_email']) && isset($_POST['contact_message'])) {
        $contact_name = $_POST['contact_name'];
        $contact_email = $_POST['contact_email'];
        $contact_message = $_POST['contact_message'];

        if (!empty($contact_name) && !empty($contact_email) && !empty($contact_message)) {
            echo '0K!';
        } else {
            echo 'Every field is required.';
        }
    }
?>          
        <form action="contacts.php" method="POST">
            Nome:<br><input type="text" name="contact_name" maxlength="25"><br><br>
            Email:<br><input type="text" name="contact_email" maxlength="50"><br><br>
            Mensagem:<br>
            <textarea name="contact_message" rows="6" cols="30" maxlength="1000"></textarea><br><br>
            <input type="submit" value="Enviar">
        </form>

答案 2 :(得分:0)

您的外部if是多余的。这些只会在POST操作期间设置,但它们将为每个POST设置,无论它们是否完整,因为表单元素将始终提供值。所以,只需使用它:

if ($_POST) {

接下来,如果索引不存在,请以不引发警告的方式读取您的值:

$contact_name = isset($_POST['contact_name']) ? $_POST['contact_name'] : null;
$contact_email = isset($_POST['contact_email']) ? $_POST['contact_email'] : null;
$contact_message = isset($_POST['contact_message']) ? $_POST['contact_message'] : null;

然后您可以像这样轻松地进行测试:

if ($contact_name && $contact_email && $contact_message) {
     // ok
}
相关问题