zoukankan      html  css  js  c++  java
  • 获取IP的六种方式

    方法一:
    
    function getip() {
    
      static $ip = '';
    
      $ip = $_SERVER['REMOTE_ADDR'];
    
      if(isset($_SERVER['HTTP_CDN_SRC_IP'])) {
    
        $ip = $_SERVER['HTTP_CDN_SRC_IP'];
    
      } elseif (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('/^([0-9]{1,3}.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP'])) {
    
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    
      } elseif(isset($_SERVER['HTTP_X_FORWARDED_FOR']) AND preg_match_all('#d{1,3}.d{1,3}.d{1,3}.d{1,3}#s', $_SERVER['HTTP_X_FORWARDED_FOR'], $matches)) {
    
        foreach ($matches[0] AS $xip) {
    
          if (!preg_match('#^(10|172.16|192.168).#', $xip)) {
    
            $ip = $xip;
    
            break;
    
          }
    
        }
    
      }
    
      return $ip;
    
    }
    
     
    
    方法二:
    
    error_reporting (E_ERROR | E_WARNING | E_PARSE);
    
    if($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]){
    
    $ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
    
    }
    
    elseif($HTTP_SERVER_VARS["HTTP_CLIENT_IP"]){
    
    $ip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"];
    
    }
    
    elseif ($HTTP_SERVER_VARS["REMOTE_ADDR"]){
    
    $ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];
    
    }
    
    elseif (getenv("HTTP_X_FORWARDED_FOR")){
    
    $ip = getenv("HTTP_X_FORWARDED_FOR");
    
    }
    
    elseif (getenv("HTTP_CLIENT_IP")){
    
    $ip = getenv("HTTP_CLIENT_IP");
    
    }
    
    elseif (getenv("REMOTE_ADDR")){
    
    $ip = getenv("REMOTE_ADDR");
    
    }
    
    else{
    
    $ip = "Unknown";
    
    }
    
    echo $ip;
    
     
    
    方法三:
    
    $iipp = $_SERVER["REMOTE_ADDR"];
    
    echo $iipp ;
    
     
    
    方法四:
    
    $user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];
    
    $user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"];
    
    echo $user_IP
    
     
    
    方法五:
    
    function get_real_ip()
    
    {
    
    $ip=false;
    
    if(!empty($_SERVER["HTTP_CLIENT_IP"])){
    
     $ip = $_SERVER["HTTP_CLIENT_IP"];
    
    }
    
    if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
    
     $ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
    
     if($ip){
    
      array_unshift($ips, $ip); $ip = FALSE;
    
     }
    
     for($i = 0; $i < count($ips); $i++){
    
      if (!eregi ("^(10|172.16|192.168).", $ips[$i])){
    
      $ip = $ips[$i];
    
      break;
    
      }
    
     }
    
    }
    
    return($ip ? $ip : $_SERVER['REMOTE_ADDR']);
    
    }
    
     
    
    方法六:
    
    if(getenv('HTTP_CLIENT_IP')){
    
    $onlineip = getenv('HTTP_CLIENT_IP');
    
    }
    
    elseif(getenv('HTTP_X_FORWARDED_FOR')){
    
    $onlineip = getenv('HTTP_X_FORWARDED_FOR');
    
    }
    
    elseif(getenv('REMOTE_ADDR')){
    
    $onlineip = getenv('REMOTE_ADDR');
    
    }
    
    else{
    
    $onlineip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
    
    }
    
     
    

      

  • 相关阅读:
    Symfony之入门学习
    git之fatal: Could not read from remote repository
    Class path contains multiple SLF4J bindings.
    php获取网址
    系统吞吐量(TPS)、用户并发量、性能测试概念和公式
    php tools 破解
    jQuery 图片裁剪插件 Jcrop
    php 上传文件 $_FILES['']['type']的值
    This is a bug I believe, and it took me 2-3 days to figure it out. Please do the following to get it working,
    curl_setopt — 设置 cURL 传输选项
  • 原文地址:https://www.cnblogs.com/qczy/p/10907318.html
Copyright © 2011-2022 走看看