您现在的位置是: 首页 >  PHP PHP

获取客户端IP,内网IP,外网IP,IP验证

冬寂 2022-12-30 09:18:27 【PHP】 1109人已围观

  1. //取客户端(浏览器)请求IP 2022122314:25:37
    function get_client_ip()
    {
       // 首先尝试使用 Cloudflare 的库获取真实的 IP 地址
       if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) {
           $ip = $_SERVER['HTTP_CF_CONNECTING_IP'];
       } elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
           $ip = $_SERVER['HTTP_CLIENT_IP'];// 其次尝试使用 HTTP 头信息获取 IP 地址
       } elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
           $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
       } else {
           $ip = $_SERVER['REMOTE_ADDR'];
       }
       // 使用函数 is_ip 来验证 IP 地址的合法性
       if (!is_ip($ip)) return 'IP未知';
       return $ip;
    }

    //获取服务器外网IP 2022122314:26:38
    function get_server_public_ip(){
       $ip = '未知IP';
       if(!empty($_SERVER['SERVER_NAME'])){
           return gethostbyname($_SERVER['SERVER_NAME']);
       } elseif (!empty($_SERVER['HTTP_CLIENT_IP'])) {
           return is_ip($_SERVER['HTTP_CLIENT_IP']) ? $_SERVER['HTTP_CLIENT_IP'] : $ip;
       } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
           return is_ip($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $ip;
       } else {
           return is_ip($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : $ip;
       }
    }

    //获取服务器内网IP 2022122314:26:52
    function get_server_private_ip() {
       if (!empty($_SERVER['SERVER_ADDR'])) {
           $ip = $_SERVER['SERVER_ADDR'];
       } else {
           $ip = gethostbyname(gethostname());
       }
       if (!is_ip($ip)) return 'IP未知';
       return $ip;
    }

    //IP是否合法(ipv4ipv6) 2022122314:27:02
    function is_ip($str) {
       if (empty($str)) return false;
       return preg_match('/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/', $str)
           || preg_match('/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/', $str);
    }


很赞哦! ( 26 )

站点信息

  • 建站时间:2020-08-10
  • 文章统计100篇文章
  • 标签管理标签云
  • 统计数据百度统计
  • 微信公众号:扫描二维码,关注我