首页站内杂志技术文摘
文章内容页

让帝国CMS原函数egetip()不仅能获取IPV6且支持php8.0的方法

  • 作者:雨祺
  • 来源: 原创
  • 发表于2023-06-24 12:10:00
  • 被阅读0
  • 让帝国CMS原函数egetip()不仅能获取IPV6且支持php8.0的方法。

    1、原ip字段长度由20改39就行了

    注意:很多会说直接去除正则,这个方法是可以正常获取,但时同也留下系统被就会注入风险。
    1. /** 
    2. * 取得IP4或IPV6(php 7.4以上写法) 
    3. * 
    4. * 不合法回返空 
    5. * @return string 
    6. */ 
    7. function egetip(): string 
    8.         global $ecms_config; 
    9.         
    10.         if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) { 
    11.  
    12.                 $ip = getenv('HTTP_CLIENT_IP'); 
    13.         } 
    14.         elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')){ 
    15.  
    16.                 $ip = getenv('HTTP_X_FORWARDED_FOR'); 
    17.         } 
    18.         elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')){ 
    19.  
    20.                 $ip = getenv('REMOTE_ADDR'); 
    21.         } 
    22.         elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')){ 
    23.  
    24.                 $ip = $_SERVER['REMOTE_ADDR']; 
    25.         } 
    26.         if($ecms_config['sets']['getiptype'] > 0){ 
    27.              
    28.                 $ip = egetipadd(); 
    29.         } 
    30.         
    31.         return (substr_count($ip, ':') > 1 && false !== filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) || false !== filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) ? $ip : ''

    1. /** 
    2. * 取得IP4或IPV6(php 5.6以上写法) 
    3. * 
    4. * 不合法回返空 
    5. * @return string 
    6. */ 
    7. function egetip() 
    8.         global $ecms_config; 
    9.         
    10.         if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) { 
    11.  
    12.                 $ip = getenv('HTTP_CLIENT_IP'); 
    13.         } 
    14.         elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')){ 
    15.  
    16.                 $ip = getenv('HTTP_X_FORWARDED_FOR'); 
    17.         } 
    18.         elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')){ 
    19.  
    20.                 $ip = getenv('REMOTE_ADDR'); 
    21.         } 
    22.         elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')){ 
    23.  
    24.                 $ip = $_SERVER['REMOTE_ADDR']; 
    25.         } 
    26.         if($ecms_config['sets']['getiptype'] > 0){ 
    27.              
    28.                 $ip = egetipadd(); 
    29.         } 
    30.         
    31.         return (substr_count($ip, ':') > 1 && false !== filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) || false !== filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) ? $ip : ''
    1. (substr_count($ip, ':') > 1 && false !== filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) || false !== filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) 这检测ipv4和ipv6合法性,可以放心用 
    【审核人:站长】

        标题:让帝国CMS原函数egetip()不仅能获取IPV6且支持php8.0的方法

        本文链接:https://www.meiweny.cn/zazhi/zhongwangjiaocheng/160.html

        赞一下

        深度阅读

        • 您也可以注册成为美文苑的作者,发表您的原创作品、分享您的心情!

        阅读记录

          关注美文苑