zoukankan      html  css  js  c++  java
  • php 获得访问者的IP

    1 <?php
    2 $user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];
    3 $user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"]; 
    4 
    5 echo $user_IP;
    6 ?>
    View Code

    【PHP获取访问者IP】的三种方法以及详解

    Q:三个IP地址的获取有什么区别?
    $_SERVER['REMOTE_ADDR']; $_SERVER['HTTP_CLIENT_IP'];
    $_SERVER['HTTP_X_FORWARDED_FOR'];
    A:区别如下 $_SERVER['REMOTE_ADDR'];  //访问端(有可能是用户,有可能是代理的)IP $_SERVER['HTTP_CLIENT_IP'];  //代理端的(有可能存在,可伪造) $_SERVER['HTTP_X_FORWARDED_FOR']; //用户是在哪个IP使用的代理(有可能存在,也可以伪造)
     
     
    方法一:$_SERVER['HTTP_X_FORWARDED_FOR']来获取相应的地址
     1 function get_onlineip() {
     2     $onlineip = '';
     3     if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
     4         $onlineip = getenv('HTTP_CLIENT_IP');
     5     } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
     6         $onlineip = getenv('HTTP_X_FORWARDED_FOR');
     7     } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
     8         $onlineip = getenv('REMOTE_ADDR');
     9     } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
    10         $onlineip = $_SERVER['REMOTE_ADDR'];
    11     }
    12     return $onlineip;
    13 }
    View Code

    方法二:利用curl依靠第三方来获取,如http://www.ip138.com/ip2city.asp

    1 function get_onlineip() {  
    2    $ch = curl_init('http://www.ip138.com/ip2city.asp');  
    3     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
    4    $a  = curl_exec($ch);  
    5    preg_match('/[(.*)]/', $a, $ip);  
    6     return $ip[1];  
    7  }  
    View Code
  • 相关阅读:
    [转]王垠的过去和现状
    支持向量机(SVM)基础
    C语言编程心得
    Fortran学习心得
    gdb使用心得
    大道至简第一章读后感
    第一个音符
    Exercise 1.20 最大公约数算法
    Exercise 1.19 Fast Fibonacci
    Exercise 1.16 1.17 1.18
  • 原文地址:https://www.cnblogs.com/tianciliangen/p/3410330.html
Copyright © 2011-2022 走看看