Php $\u POST方法请求限制

Php $\u POST方法请求限制,php,Php,但假设我想将$u POST['body']访问权限限制为每个用户100(IP)。 每次同一用户(同一IP)访问/尝试$_POST['body'])ir计数时,如果达到限制(此时间限制为100),则显示错误消息,并表示他可以在10分钟后访问$_POST['body'] 首先想到的是使用MySQL,记录每个IP并计算访问次数。但想象一下,若网站有很多访问者,那个么它会记录多少IP。那么,没有mysql就可以做到这一点吗?如果是,请提供脚本 如果有什么不明白的地方,请提问,并为英语道歉:/使用会话是否

但假设我想将$u POST['body']访问权限限制为每个用户100(IP)。 每次同一用户(同一IP)访问/尝试$_POST['body'])ir计数时,如果达到限制(此时间限制为100),则显示错误消息,并表示他可以在10分钟后访问$_POST['body']

首先想到的是使用MySQL,记录每个IP并计算访问次数。但想象一下,若网站有很多访问者,那个么它会记录多少IP。那么,没有mysql就可以做到这一点吗?如果是,请提供脚本


如果有什么不明白的地方,请提问,并为英语道歉:/

使用会话是否足够

if($_POST['body']) {
//do my stuff
}
if($\u POST['body'])){
如果($_会话['counter']<100){
//...
$_会话['counter']++;
}
}

请记住,不同的IP并不意味着不同的用户。许多用户可以使用同一个代理,为他们提供相同的IP地址。

唯一的方法是保存此服务器端,如果您正确清理数据库选项卡,它不会增长太多


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

我的第一个想法也是DB。你试过了吗

你是说MySQL cron/cleanup在一段时间后?cron作业需要时不时地运行以删除10分钟+1以上的记录,因为这是我要建议的,我也会对IP和代理提出同样的观点。但是不要忘记事先做
session\u start()
!如果用户只是清理或拒绝此站点的Cookie,此方法将不起作用。@Palantir会话是服务器端而不是客户端,因此如果用户不接受Cookie,与会话无关。@m4rc请阅读手册。访问您的网站的访问者被分配了一个唯一的id,即所谓的会话id。该id存储在用户端的cookie中,或者在URL中传播。删除cookie,您将破坏会话。@Palantir我的错误,抱歉。
if($_POST['body']){
    if($_SESSION['counter'] < 100){
       //...
       $_SESSION['counter']++;
    }
}