感谢您的光临。
我正在尝试编写一个脚本,以便在用户发布评论后设置Cookie,从而限制他们再次发布30分钟。我很困惑从哪里开始。拜托,请问我们能帮我解决这个问题吗?
我正在尝试使用此jquery插件 - countdown timer。
答案 0 :(得分:12)
不要做客户端(cookies,javascript,等等);这很容易被规避。
如果必须注册用户才能发布评论,您可以在数据库中添加存储上次评论时间的列/表。每次发布评论之前,您都要检查自该数据库中注册的那一刻起是否已经过了30分钟。如果没有,则中止操作。
如果您不需要注册,可以将数据库保存为元组(IP,时间)并继续进行。
答案 1 :(得分:1)
除了如何使用cookie,你为什么要这样做?如果您想避免技术上先进的垃圾邮件发送者,设置客户端cookie将会阻止他们大约5秒钟,然后他们会为您的网站禁用Cookie或以其他方式解决您的限制。
至于如何,你可以简单地设置一个超时30分钟的cookie。如果cookie存在,请阻止。如果没有,他们可以自由发布。
答案 2 :(得分:1)
如果不了解您的项目,我会这样做:
当然这不是最好的方法,因为他们必须启用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
}