在我的新网站上,我希望通过将用户限制为每小时最多2个帖子来减少垃圾邮件(这可能会更改为允许更多,但现在只有2个)我设计了一种使用Cookie的方法,但是,出于某种原因该网站没有设置cookie,这是我的cookie代码:
$sql = "INSERT INTO mysql_table (timestamp,entry,uid,allowcomments) VALUES ('$timestamp','$entry','".rndTxt(16)."','$allowcommenting')";
$result = mysql_query($sql) or print ("Can't insert into table.<br />" . $sql . "<br />" . mysql_error());
if ($result != false) {
if(isset($_COOKIE['AnonPost']))
{
$hour = time() + 3600;
setcookie("AnonPost", "2", $hour);
}
else {
$hour = time() + 3600;
setcookie("AnonPost", "1", $hour);
}
print "<meta HTTP-EQUIV='REFRESH' content='0; url=index.php'>";
}
mysql_close();
然后一个后来的if / else语句检查它是否存在,以及该值是什么(如果它不存在,他们会看到网站正常,如果它存在,val = 1则显示一条消息说只留下一个帖子,如果val = 2,他们会收到一条消息,说他们这小时已经没用了帖子。)
这适用于我的本地主机,但不适用于网站本身(http://aviatex14.co.uk/anonpost/)任何想法是什么原因?
除此之外,我知道这不是限制帖子的最佳方式,因此,任何人都可以帮我限制表单提交,或者就我的Cookie问题向我提出建议吗?
答案 0 :(得分:6)
为了减少垃圾邮件,有很多方法
验证码系统。 http://www.google.com/recaptcha
帐户创建期间的电子邮件确认。
发布期间的垃圾邮件识别。寻找垃圾关键字。
表单中的蜜罐字段。这使用CSS来隐藏每个表单上的蜜罐输入字段。如果请求到达填写了该字段的服务器,您就知道机器人提交了表单并且可以忽略该请求。
声望系统就像堆叠交换上的那样。只有在用户累积了一定数量的产品后,才允许用户执行某些操作。
答案 1 :(得分:2)
考虑1:为了设置cookie,需要在将任何HTML发送到页面之前完成(因此它必须位于脚本的顶部,以及session_start)。
考虑2:说到session_start,您可能需要考虑设置$ _SESSION变量,而不是设置cookie。
答案 2 :(得分:1)
使用cookie(因为它存储在客户端)不是设置限制的安全方法。用户可以轻松更改它,因此您应该尝试使用服务器端方法。
您只需在数据库中统计用户的帖子即可。这样的内容将为您提供过去一小时内用户的帖子数量:
select count(*) from mysql_table where uid='$uid' and timestamp > (DATE_ADD(now(), INTERVAL -1 HOUR););