我有一个简单的php电子邮件表单,但我收到了垃圾邮件。我添加了一个检查输入,用户必须填写输入。如果输入值等于12则提交表单,否则不提交弹出错误的表单。(请做数学运算。)
<form action="" method="post">
<input type="text" name="name" placeholder="name" required>
<input type="text" name="email" placeholder="email" required>
<input type="text" name="phone" placeholder="phone" required>
<div class="check">
<label>6 x 2 =</label>
<input type="text" name="not_robot" required="required">
</div>
<input type="submit" value="submit">
</form>
我正在使用下面的php方法:
if(isset($_POST['not_robot']) !== 12 && isset($_POST['not_robot']) !== ''){
echo '<script type="text/javascript">alert("Please do the math, if you are human.");</script>';
}else{
//email script here
}
当我提交表单时,错误弹出窗口显示“请做数学,如果你是人”,但在我关闭弹出窗口后,它也会发送电子邮件。 任何帮助appreaciated谢谢
P.S:如果使用javascript或jquery可以检查方法,那将是一个很好的帮助。
答案 0 :(得分:1)
您需要在客户端上进行测试:
普通JS
TestCls
jQuery的:
window.onload=function() {
document.querySelector("form").onsubmit=function(e) {
var val = this.elements["not_robot"].value;
return !isNaN(val) && parseInt(Number(val)) == val && !isNaN(parseInt(val, 10);
}
}
答案 1 :(得分:0)
请勿尝试以这种方式阻止发送垃圾邮件。我的建议是应用csrf保护和谷歌验证码。您可以使用documentation进行csrf保护。对于Google验证码,请使用this library
答案 2 :(得分:0)
尝试检查提交表单的时间。使用以下代码或链接 -
HTML代码 -
<form action="" method="post">
<input type="text" name="name" placeholder="name" required>
<input type="text" name="email" placeholder="email" required>
<input type="text" name="phone" placeholder="phone" required>
<div class="check">
<label>6 x 2 =</label>
<input type="text" name="not_robot" required="required">
</div>
<input type="submit" value="submit">
</form>
JAVASCRIPT代码 -
$('form').submit(function() {
if (parseInt($('input[name="not_robot"]').val()) == 12) {
return true;
}
else{
alert('You not enterd the correct value');
return false;
}
});
答案 3 :(得分:0)
如果你想通过PHP验证..Below就是这样
if(is_numeric($_POST['not_robot']) && !empty($_POST['not_robot'])){
echo '<script type="text/javascript">alert("Please do the math, if you are human.");</script>';
}else{
//email script here
}
答案 4 :(得分:0)
方式:
使用PHP exit()函数退出当前脚本执行。我们可以使用此功能(或不使用)。
语法: exit(message)
OR
exit()
我们也可以使用return;
此处,控件将返回调用该文件运行的脚本。
试试这个:
if(isset(($_POST['not_robot']) != '12') && (isset($_POST['not_robot']) !== '')){
/* alert here */
exit();
}else{
//email script here
}
答案 5 :(得分:-1)
HTML:
<form action="" method="post" name="form1">
<input type="text" name="name" placeholder="name" required>
<input type="text" name="email" placeholder="email" required>
<input type="text" name="phone" placeholder="phone" required>
<div class="check">
<label>6 x 2 =</label>
<input type="text" name="not_robot" id="not_robot" required="required" />
</div>
<input type="button" value="submit" onClick="checkForm()">
</form>
javascipt的:
function checkForm()
{
if(document.getElementById('not_robot').value == "12" && document.getElementById('not_robot').value != "")
{
alert('ok');
document.forms['form1'].submit();
}else{
alert('not ok');
}
}