当前位置: 首页 > article >正文

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));

?>


http://www.kler.cn/a/408962.html

相关文章:

  • 【实战】基于urllib和BeautifulSoup爬取jsp网站的数据
  • Linux网络——网络层
  • 线程(三)【线程互斥(下)】
  • C语言中const char *字符进行切割实现
  • 07-Making a Bar Chart with D3.js and SVG
  • 遗传算法(Genetic Algorithm, GA)
  • 数据结构-队列-顺序队列
  • tauri2.0版本开发苹果ios和安卓android应用,环境搭建和最后编译为apk
  • C++结构型设计模式之使用抽象工厂来创建和配置桥接模式的例子
  • XviD4PSP视频无损转换器
  • oracle的静态注册和动态注册
  • 数据可视化复习2-绘制折线图+条形图(叠加条形图,并列条形图,水平条形图)+ 饼状图 + 直方图
  • 【技术支持】vscode不使用插件,两种方式重命名html标签对
  • 基于物联网设计的人工淡水湖养殖系统(华为云IOT)_253
  • 关于mqtt协议与qt联合开发的实现记录
  • 用Tauri框架构建跨平台桌面应用:1、Tauri快速开始
  • 【桂林理工大学主办 | 往届均已EI检索】第五届能源工程、新能源材料与器件国际学术会议(NEMD 2025)
  • ctfshow -web 89-115-wp
  • 数据结构之二:表
  • RoPE——Transformer 的旋转位置编码
  • Centos使用docker搭建Graylog日志平台
  • python中的base64使用小笑话
  • vue从入门到精通(七):事件处理
  • 全新三网话费余额查询API系统源码 Thinkphp全开源 附教程
  • 力扣力扣力:860柠檬水找零
  • 【机器学习监督学习】:从原理到实践,探索算法奥秘,揭示数据标注、模型训练与预测的全过程,助力人工智能技术应用与发展