<?php
session_start(); // 启动会话
// 限制的请求数量和时间间隔
$maxRequests = 100;
$timeInterval = 600; // 10分钟
function handleRequest() {
global $maxRequests, $timeInterval;
// 获取客户端IP地址
$ip = $_SERVER['REMOTE_ADDR'];
// 检查是否存在会话并且已经存储了请求计数器和时间戳
if (isset($_SESSION['request_count']) && isset($_SESSION['last_request_time'])) {
$requestCount = $_SESSION['request_count'];
$lastRequestTime = $_SESSION['last_request_time'];
// 检查请求计数器是否达到限制的请求数量
if ($requestCount >= $maxRequests) {
return false;
}
// 检查上一次请求的时间间隔
$interval = time() - $lastRequestTime;
if ($interval < $timeInterval) {
// 更新请求计数器和时间戳
$_SESSION['request_count']++;
$_SESSION['last_request_time'] = time();
return true;
}
}
// 初始化会话数据
$_SESSION['request_count'] = 1;
$_SESSION['last_request_time'] = time();
return true;
}
// 处理请求
if (handleRequest()) {
// 执行处理逻辑
echo "请求成功!";
} else {
// 返回错误信息或其他错误处理逻辑
echo "请求过多,请稍后再试!";
}
?>