Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.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中的用户帖子_Php_Html - Fatal编程技术网

限制php中的用户帖子

限制php中的用户帖子,php,html,Php,Html,我对php相当陌生。我有一个网站,在那里,会员可以就某些主题发表帖子。我试图对上述帖子设置一个限制。我使用$u SESSION和isset开发了一个粗略的方法。此方法对用户不友好,因为如果用户不遵守每多少秒1篇文章的策略,则需要用户刷新页面。有没有更好的方法来做这件事,我已经做了很多研究,结果发现我是空的 if (!isset($_SESSION['posted'])) $_SESSION['posted'] = time(); if (time()-$_SESSION['posted']

我对php相当陌生。我有一个网站,在那里,会员可以就某些主题发表帖子。我试图对上述帖子设置一个限制。我使用$u SESSION和isset开发了一个粗略的方法。此方法对用户不友好,因为如果用户不遵守每多少秒1篇文章的策略,则需要用户刷新页面。有没有更好的方法来做这件事,我已经做了很多研究,结果发现我是空的

if (!isset($_SESSION['posted']))
 $_SESSION['posted'] = time();

if (time()-$_SESSION['posted'] < 12)
 die('Post limit exceeded. Please hit refresh');
else
 $_SESSION['posted'] = time();
if(!isset($\u会话['posted']))
$\会话['posted']=time();
if(time()-$\会话['posted']<12)
die('超过Post限制。请点击刷新');
其他的
$\会话['posted']=time();

这应该在客户端和服务器端进行检查

  • 在客户端,在将请求发送到服务器之前,您需要使用cookie跟踪最近的帖子数量,并使用javascript确保用户没有超过限制
  • 因为用户可以通过发送原始http请求来绕过这个问题,所以还需要在服务器端进行检查。在这种情况下,使用$\会话是不够的,因为用户仍然可以修改会话变量。您必须查询数据库并确保请求有效

您可以使用ajax测试在“后台”运行此检查,并在时间限制错误时禁用提交。但是即使表单被提交了,你仍然需要在服务器上做这个检查,以防有人试图绕过JS代码。你真的想把它绑定到用户会话吗?如何阻止不接受cookies或传播会话id的bot以超出您期望的速率发布?很多时候,像这样的限制都与IP地址有关,无法从客户端操作会话中存储的值。这是您在cookie上使用会话的主要原因之一—您可以控制数据。通过cookies,用户可以操作数据。从客户端访问/操作会话数据的唯一方法是使用Ajax调用或其他JavaScript机制调用另一个php脚本,该脚本将通过会话函数执行会话数据的检索/操作。我的意思是php通过cookie中的
id
跟踪会话,如果将其删除,您正在进行新的会话,可以发表更多的帖子。