Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用时间和日期的Php Post限制?_Php - Fatal编程技术网

使用时间和日期的Php Post限制?

使用时间和日期的Php Post限制?,php,Php,使用时间和日期php函数限制某人每10分钟发布一条消息的最佳方法是什么?我想让它检查是否有人在过去10分钟内发布了一些东西,如果是的话,输出一个错误,说他们不允许发布 任何信息和代码示例都将非常有用,谢谢 我只想问数据库,用户的帖子是否已经“十分钟前”发布过。你会发现足够的东西来达到你的目标。另一个黄金环节是: 希望这会有所帮助,如果您打算使用CDN,这不是很好,但它又快又简单。在某人发布消息后,在会话中放置一个时间戳,然后在下次发布时检查该时间戳 if ($_SESSION['post_ti

使用时间和日期php函数限制某人每10分钟发布一条消息的最佳方法是什么?我想让它检查是否有人在过去10分钟内发布了一些东西,如果是的话,输出一个错误,说他们不允许发布


任何信息和代码示例都将非常有用,谢谢

我只想问数据库,用户的帖子是否已经“十分钟前”发布过。你会发现足够的东西来达到你的目标。另一个黄金环节是:


希望这会有所帮助,

如果您打算使用CDN,这不是很好,但它又快又简单。在某人发布消息后,在会话中放置一个时间戳,然后在下次发布时检查该时间戳

if ($_SESSION['post_time'] && $_SESSION['post_time'] <= strtotime('now -10 minutes')) {
  // error
} 
$_SESSION['post_time'] = time();

if($\u SESSION['post\u time']&&$\u SESSION['post\u time']]Unix使用time()为数据库post加盖日期戳。这将向您返回一个日期戳

然后将当前时间与从用户处插入数据库的时间进行比较,如下所示:

假设他们的用户id为22:


将$sql字符串推送到您的查询函数中,如果出现任何结果,它们在十分钟前就已经发布了,因此您会发出一个错误并绕过添加记录。

是否应该是“现在-10分钟”?这是怎么回事,@Gebbo:我在那里看到了您的sql代码,我发布了一些比您所放置的更直观的答案。这假设一个uid这也许是一个安全的假设,但对于匿名海报,不会有uid@ChuckVose如果你接受一个非帖子,那么你需要使用$\u会话并给他们临时UID。但是你还需要将IP地址作为跟踪它们的方法。你可能还需要向他们的计算机写入cookie。但我不建议接受在POST上。有些用户与大学校园中的用户来自相同的IP,因此存在对IP认证过于严格的风险。我不会对其他用户帐户强制进行IP认证。@Chuck Vose:$\u会话的风险是,用户可以关闭浏览器并再次打开它,然后获得新的$\u会话。如果要停止flooding,你不能单靠$\u会话或$\u COOKIE。同意,很难说什么是真正最好的方法;这是一个难题。我承认会话COOKIE有一定风险,但我想尽可能完整地回答这个问题,同时承认会话并不是允许无帖子的银弹。
// returns datestamp equal to ten minutes before the current time
$threshold = time() - 600;

// see if there are any posts by the user
$sql = 'select from post_table where posted_date > '.$threshold.' and uid=22';