找回密码
 立即注册

QQ登录

只需一步,快速开始

PHP获取客户端ip后进行ipv4地址段匹配函数


  1. /**
  2. * 检查IP是否在CIDR范围内
  3. * @param string $ip 要检查的IP地址
  4. * @param string $cidr CIDR格式,如"101.226.103.0/25"
  5. * @return bool
  6. */
  7. function ipInCIDR($ip, $cidr) {
  8.     list($subnet, $bits) = explode('/', $cidr);
  9.    
  10.     // 将IP地址转换为32位整数
  11.     $ip = ip2long($ip);
  12.     $subnet = ip2long($subnet);
  13.     $mask = -1 << (32 - $bits);
  14.    
  15.     return ($ip & $mask) == ($subnet & $mask);
  16. }

  17. /**
  18. * 验证IP地址格式
  19. * @param string $ip IP地址
  20. * @return bool
  21. */
  22. function isValidIP($ip) {
  23.     return filter_var($ip, FILTER_VALIDATE_IP) !== false;
  24. }

  25. /**
  26. * 完整的IP匹配流程
  27. * @param string $cidr CIDR格式
  28. * @return bool
  29. */
  30. function checkClientIPInCIDR($cidr) {
  31.     // 获取客户端IP
  32.     $client_ip = getClientIP();
  33.    
  34.     // 验证IP格式
  35.     if (!isValidIP($client_ip)) {
  36.         return false;
  37.     }
  38.    
  39.     // 检查IP是否在CIDR范围内
  40.     return ipInCIDR($client_ip, $cidr);
  41. }
复制代码

  1. // 使用示例
  2. $cidr_range = "101.226.103.0/25";
  3. $client_ip = getClientIP();

  4. echo "客户端IP: " . $client_ip . "\n";
  5. echo "CIDR范围: " . $cidr_range . "\n";

  6. if (checkClientIPInCIDR($cidr_range)) {
  7.     echo "IP地址在指定范围内\n";
  8. } else {
  9.     echo "IP地址不在指定范围内\n";
  10. }

  11. // 测试特定IP
  12. $test_ip = "101.226.103.50";
  13. if (ipInCIDR($test_ip, $cidr_range)) {
  14.     echo "测试IP {$test_ip} 在范围内\n";
  15. } else {
  16.     echo "测试IP {$test_ip} 不在范围内\n";
  17. }
复制代码

本教程由无限星辰工作室CRX349独家整理和提供,转载请注明地址,谢谢。本文地址:https://www.xmspace.net/thread-1047-1-1.html
无限星辰工作室  好集导航 Discuz全集下载  星辰站长网  集热爱361  一品文学  手机小游戏合集   海外空间网 星辰api  星辰支付二维码管理平台 LOT智能硬件聚合平台 阿里云服务器 腾讯云服务器
服务Discuz!建站|DiscuzQ配置|二开|小程序|APP|搬家|挂马清理|防护|Win/Linux环境搭建|优化|运维|
服务理念:专业 诚信 友好QQ842062626 服务项目 Q群315524225

发表于 昨天 16:29 | 显示全部楼层 |阅读模式

回复 | 使用道具 举报

该帖共收到 0 条回复!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

美图秀

    • nvidia-smi限制显卡功耗
    • PVE解决开机后网卡灯灭
    • Cordova开发环境配置(Android)
    • PVE下WIN10虚拟机C盘扩容流程
    • gitee的SSH认证配置流程
拖动客服框
Online Service
点击这里给我发消息
点击这里联系我们
微信扫一扫
在线客服
快速回复 返回顶部 返回列表