php 限制访问次数
php 限制访问次数
- 限制访问次数的php 文件
- 提示 : 会生成一个 visits.json 文件 用来记录访问日志 并不是恶意文件
- 需要指定正确的访问路径
<?php
# 限制访问次数的php 文件
# 提示 : 会生成一个 visits.json 文件 用来记录访问日志 并不是恶意文件
session_start();
// 获取客户端 IP 地址
$ip = $_SERVER['REMOTE_ADDR'];
// 内容文件路径
$content_path = "./index.html";
// 设置访问限制
$maxVisits = 5;
$visitTimeFrame = 10; // 1小时
// 日志路径
$filePath = './visits.json';
// 初始化访问记录
if (!file_exists($filePath)) {
file_put_contents($filePath, json_encode([]));
}
$visits = json_decode(file_get_contents($filePath), true);
// 清理过期的访问记录
foreach ($visits as $ipKey => $visitData) {
if (time() - $visitData['lastVisit'] > $visitTimeFrame) {
unset($visits[$ipKey]);
}
}
$null404 = '<html><head><title>404 Not Found</title></head><body><center><h1>404 Not Found</h1></center><hr><center>nginx</center></body></html>';
$content = file_get_contents($content_path);
// 检查当前 IP 的访问次数, 检查当前用户设备是否为移动端
if (isset($visits[$ip])) {
if ($visits[$ip]['count'] >= $maxVisits && strpos($_SERVER['HTTP_USER_AGENT'], 'Mobile') !== false) {
echo $null404;
} else {
$visits[$ip]['count']++;
$visits[$ip]['lastVisit'] = time();
# 放行正常请求
echo $content;
}
} else {
$visits[$ip] = ['count' => 1, 'lastVisit' => time()];
# 清理缓存之后放行的正常请求
echo $content;
}
// 保存访问记录
file_put_contents($filePath, json_encode($visits));
?>
原文地址:https://blog.csdn.net/2301_79996063/article/details/143985565
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!