小编sma*_*bee的帖子

如何限制一分钟内发出的用户请求数

用户将通过URL等号码请求文件script.php?userid=222.此示例将显示文件#222的记录.

现在我想将每个(远程IP)用户的文件数限制为一分钟内最多5个不同的记录.但是,用户应该能够在任何时间访问相同的id记录.

因此,用户可以多次访问文件#222,但如果(远程IP)用户在一分钟内访问超过5个其他不同的记录,那么它应该显示错误.

例如,假设在一分钟内发出以下请求:

script.php?userid=222
script.php?userid=523
script.php?userid=665
script.php?userid=852
script.php?userid=132
script.php?userid=002
Run Code Online (Sandbox Code Playgroud)

然后在最后一个请求它应该显示错误消息.

这是基本代码:

$id = $_GET['userid'];
if (!isset($_GET['userid']) || empty($_GET['userid'])) {
    echo "Please enter the userid";
    die();
}

if (file_exists($userid.".txt") &&
        (filemtime($userid.".txt") > (time() - 3600 * $ttime ))) {
    $ffile = file_get_contents($userid.".txt");} else {
    $dcurl = curl_init();
    $ffile = fopen($userid.".txt", "w+");
    curl_setopt($dcurl, CURLOPT_URL,"http://remoteserver.com/data/$userid");
    curl_setopt($dcurl, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($dcurl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
    curl_setopt($dcurl, CURLOPT_TIMEOUT, 50);
    curl_setopt($dcurl, CURLOPT_FILE, $ffile);
    $ffile = curl_exec($dcurl); 
    if(curl_errno($dcurl)) // check for execution errors
    {
        echo 'Script error: …
Run Code Online (Sandbox Code Playgroud)

php ip url limit

8
推荐指数
1
解决办法
8231
查看次数

标签 统计

ip ×1

limit ×1

php ×1

url ×1