限制每30分钟发布一次

时间:2010-06-21 16:50:22

标签: php javascript cookies comments timer

感谢您的光临。

我正在尝试编写一个脚本,以便在用户发布评论后设置Cookie,从而限制他们再次发布30分钟。我很困惑从哪里开始。拜托,请问我们能帮我解决这个问题吗?

我正在尝试使用此jquery插件 - countdown timer

6 个答案:

答案 0 :(得分:12)

不要做客户端(cookies,javascript,等等);这很容易被规避。

如果必须注册用户才能发布评论,您可以在数据库中添加存储上次评论时间的列/表。每次发布评论之前,您都要检查自该数据库中注册的那一刻起是否已经过了30分钟。如果没有,则中止操作。

如果您不需要注册,可以将数据库保存为元组(IP,时间)并继续进行。

答案 1 :(得分:1)

除了如何使用cookie,你为什么要这样做?如果您想避免技术上先进的垃圾邮件发送者,设置客户端cookie将会阻止他们大约5秒钟,然后他们会为您的网站禁用Cookie或以其他方式解决您的限制。

至于如何,你可以简单地设置一个超时30分钟的cookie。如果cookie存在,请阻止。如果没有,他们可以自由发布。

答案 2 :(得分:1)

如果不了解您的项目,我会这样做:

  1. 当用户发布首次检查以查看您的Cookie是否存在时
  2. 如果它不存在,则允许用户发布,并创建一个包含当前时间戳的cookie
  3. 如果cookie确实存在,请检查时间戳是否超过当前时间前30分钟。
  4. 如果时间超过30分钟,请让他们发布并重置时间。
  5. 如果没有,请给他们一个漂亮的信息,说他们必须等待。
  6. 当然这不是最好的方法,因为他们必须启用cookie,或者他们可以删除cookie,或者诸如此类的东西。我个人会通过以下方式来处理这个服务器端:a)让每个用户创建一个帐户进行发布(对于你担心用户每隔30分钟发布一次以上的内容,这并不是太疯狂),或者b)检查他们的IP地址。

答案 3 :(得分:0)

查看设置cookie的函数setcookie()和获取设置cookie值的$ _COOKIE [“mycookie”]。

但请注意,用户可以通过删除Cookie来绕过“解决方案”。

更复杂(但更好)的解决方案是实现用户系统(使用登录等)并检查数据库中最后一篇文章的时间。

答案 4 :(得分:0)

为什么是jquery?你可以通过php来实现。

将用户数据存储在cookie中(如果他/她是注册用户,商店ID,如果不是 - 存储IP地址),并将时间设置为30分钟(或任何你想要的)。然后验证,如果cookie是活动的,请不允许写评论。

答案 5 :(得分:0)

使用会话

例如,在帖子之后,将当前时间+ 30分钟放在会话行中 $_SESSION['postTimeFlag'] = time() + 1800; 然后,每当用户即将发布会话时

if(time()>$_SESSION['postTimeFlag']) { 
   //continue posting
}