在这个问题中,我将讨论问题的两个部分。
第1部分:
我有一个php+javascript验证器表单,如果javascript验证了正确的rand数字(由php生成),它会向我的客户发送一封电子邮件。到目前为止还不错。。。问题是兰特的数量不足以避免SPAM(事实上,我的客户每天收到大约20封虚假阿迪达斯活动的电子邮件)。所以,我的想法来自于得到一个兰特数+10(迫使用户解决计算)。
第2部分:
我不确定解决这个问题的最佳方法是什么,但我认为在这3个选项中:
- php变量内的和rand数
- 读取javascript中的rand数字,并在javascript中求和10
- 读取
php
生成的rand数,并对另一个rand数求和
这是我的代码,没有总和:
PHP
$ran_num = rand(0,9999);
$exclude_check = "valid";
JAVASCRIPT
if (document.getElementById("spambox").value != "<?php echo $ran_num ?>") {
alert('<?php echo $spamerror_s5_qc ?>');
return false;
}
简单的蜜罐示例,这是我见过的最有效的方法,不涉及ip禁令和其他内容。
您需要在表单上添加一个不需要用户填写的字段。然后在前端用javascript隐藏它。机器人不会有javascript,所以他们会看到这个字段并填写它。将其命名为听起来很重要的内容,如"required"或"first_name"等。
然后在你的PHP上:
if($_POST['first_name']){
//YA FILTHY BOT!
}
else{
//process form
}