2010-10-27 11 views
0

我在网站上有一个计时器,用户将只能在每个*秒/分钟/小时点击。每个用户都在用户表中写入和读取值的计时器值。数据库中的值是用户必须等待的秒数。PHP定时器安全

我已经想出了如何使定时器从sql数据库中的正确值倒计时,但我还没有弄清楚如何使它在servside安全。

什么是检测点击时间最早的最有效方法?

回答

0

嗯,当用户点击时,你记录时间(服务器时间),从数据库中减去数值,看看它是否小于设置的值。

也许你应该提供更多的细节...

+0

我会尽量给予尽可能多的细节。你想知道什么? – Kraffs 2010-10-27 18:02:10

+0

你如何认识用户?通过cookie?会议?或者它是一个登录用户?也就是说,我认为检查用户是否已经点击了计时器很简单,在这种情况下,您只需减去数值并确定是否可以接受点击。如果是第一次点击,只需存储该值即可。 – hummingBird 2010-10-27 18:09:06

+0

关于安全性,只要确保负责时间管理的脚本不能由一个人调用 - 在另一个脚本中定义一个常量,并检查在调用“时间管理”脚本时是否定义了该常量。 – hummingBird 2010-10-27 18:10:20

0

我在Playcat上。

首先点击将时间存储在数据库中。 第二次点击选择第一次点击; 检查现在 - firstclick < userTimervalue

如果是这样,则用户没有等待足够长的 回报虚假 ELSE返回true和更新firstclick到CURRENTTIME。

我会补充的唯一的事情是你应该添加clientside JavaScript来模仿计时器,它可以减少对数据库的检查。

0

您可以获取整个记录并使用PHP进行比较,也可以发出SQL命令对其进行检查。假设MySQL的:

SELECT IF(COUNT(id), 1, 0) AS allowed FROM some_table 
WHERE NOW() > DATE_ADD(timestampCol, INTERVAL 5 MINUTE) AND user_id = :userid; 

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-add

不知道什么是有“安全”做,因为它通常被称为虽然。如果您的问题是“我如何确保应用程序安全”,则问题太广泛,无法快速回答。如果你的问题是“如何确保它有效”,那么就是这样。