仅当字段为空时如何发送表单

时间:2016-12-29 14:58:52

标签: php forms

作为PHP的新手,我在我的网站上实施Google reCaptcha时遇到了问题。

我将自己定位于一个更简单的解决方案:如果此字段为空,则发送表单。

这是我的代码:

<form method="POST" action="/#contact">

   <!-- Name + mail -->
   <input type="text" required placeholder="Name" name="name" />
   <input type="email" required placeholder="Email" name="email" id="email" value=""/>

<select name="subject" id="category">
   <option value="">Subject</option>
   <option value="1">1</option>
   <option value="1">2</option>
   <option value="1">3</option>
   <option value="1">4</option>
</select>

<input id="submit" name="submit" type="submit" value="Send"/>
<input type="reset" value="Clear" class="alt" />

<div>
    <label>If you're human, leave this field epmty</label> 
    <input type="text" name="comment">
    <?php
    if(empty($_POST['comment'])) {
     // the field is empty
    }
    ?>
</div>  
</form>

我的问题是:表格仍在发送,即使现场还有一些东西。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

有两种解决方案:

  1. 调用验证输入的php文件。当用户点击发送按钮时,它会转到php页面。此页面检索填写表单的值并验证它。如果找到无效输入,您可以使用url中的错误参数调用主页(例如index.php)(例如index.php?error = botfound)。在index.php文件的开头,您可以编写一个检查是否有错误参数,并在需要时显示错误消息。

  2. 让javascript在将值发送到php文件之前验证输入的值。为此,您需要从<form method="POST" action="/#contact">

  3. 更改代码

    为:

    <form method="POST" action="/#contact"  onsubmit="DoSubmit();">
    

    使用javascript函数:

    <script>
        function DoSubmit(){
            if(document.getElementById('idOfInput').value != ""){
                alert("Wrong input"); //Or you can actually add an error message to your page.
                return false;
            }
            return true;
        }
    </script>
    

    我认为该脚本将确保id为'ifOfInput'的输入值是否为空,它将发出警报并且不会调用php脚本。

    (顺便说一下,你也可以让这个输入不可见,这样它不会让普通用户烦恼,但机器人仍会填写输入。)

    希望这有助于:)