$ _POST方法请求限制

问题描述:

if($_POST['body']) { 
//do my stuff 
} 

但是我们假设我想限制$ _POST ['body']对每个用户(IP)的访问权限为100。 每次同一个用户(相同的IP)访问/尝试$ _POST ['身体'])IR计数的他,如果达到限制(这个时间限制100)显示错误消息,并说,他可以访问$ _POST ['机构'] 10分钟后。

想到的第一个想法是使用MySQL,记录每个IP并记录访问时间。但想象一下,如果网站有许多访问者记录了多少IP。那么,没有mysql可以这样做?如果是,请提供脚本。

如果有什么不明白的,jusk问,对不起,英语:/

唯一的办法就是保存这个服务器端,如果你正确地清理它,数据库tabe不会增长太多。

您可以使用cookie或会话(它们是基于cookie的),但这是客户端,人们可以删除或更改cookie。

+0

你的意思是MySQL cron/cleanup在一段时间之后? – ZeroSuf3r 2011-05-06 13:13:02

+0

Cron作业每隔一段时间运行一次以删除超过10分钟的记录 – m4rc 2011-05-06 13:14:13

使用是足够为你的会议?

if($_POST['body']){ 
    if($_SESSION['counter'] < 100){ 
     //... 
     $_SESSION['counter']++; 
    } 
} 

请记住,不同的IP并不意味着不同的用户。许多用户可以在同一个代理服务器后面,为他们提供所有相同的IP地址。

+0

+1,因为这正是我所要建议的,我也会对IP和代理也提出同样的观点。但是不要忘记事先做'session_start()'! – Spudley 2011-05-06 13:13:55

+0

如果用户只是清理cookie或拒绝他们为这个网站,这种方法将无法正常工作。 – Palantir 2011-05-06 13:14:41

+0

@Palantir会话是服务器端,而不是客户端,所以如果用户不接受cookie,它与会话无关。 – m4rc 2011-05-06 13:16:06

我的第一个想法也是DB。你有没有试过cookies