作为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>
我的问题是:表格仍在发送,即使现场还有一些东西。
提前感谢您的帮助。
答案 0 :(得分:1)
有两种解决方案:
调用验证输入的php文件。当用户点击发送按钮时,它会转到php页面。此页面检索填写表单的值并验证它。如果找到无效输入,您可以使用url中的错误参数调用主页(例如index.php)(例如index.php?error = botfound)。在index.php文件的开头,您可以编写一个检查是否有错误参数,并在需要时显示错误消息。
让javascript在将值发送到php文件之前验证输入的值。为此,您需要从<form method="POST" action="/#contact">
为:
<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脚本。
(顺便说一下,你也可以让这个输入不可见,这样它不会让普通用户烦恼,但机器人仍会填写输入。)
希望这有助于:)