PHP获得客户端IP

PHP获得客户端IP

getenv -- Gets the value of an environment variable, string getenv ( string varname ), Returns the value of the environment variable varname, or FALSE on an error.

  1. <?php   
  2.   // Example use of getenv()   
  3.   $ip  =  getenv ( 'REMOTE_ADDR' );  
  4.   // Or simply use a Superglobal ($_SERVER or $_ENV)   
  5.   $ip  =  $_SERVER [ 'REMOTE_ADDR' ];   
  6. ?>  
<?php 
  // Example use of getenv()
  $ip = getenv('REMOTE_ADDR');
  // Or simply use a Superglobal ($_SERVER or $_ENV)
  $ip = $_SERVER['REMOTE_ADDR']; 
?>

这是在PHP官方的manual提供的方法。

但是当Web服务器API是ASAPI (IIS)的时候,getenv函数是不起作用的。这种情况下你如果用getenv来取得用户客户端ip的话,得到的将是错误的ip地址。

因此更为安全和准确的方法是尽量避免使用getenv函数。比如可以用以下的函数来获取ip信息:

程序代码
  1. <?php  
  2.     function  GetIP(){  
  3.         if  ( getenv ( "HTTP_CLIENT_IP" )   
  4.             && strcasecmp ( getenv ( "HTTP_CLIENT_IP" ),  "unknown" ))  
  5.            $ip  =  getenv ( "HTTP_CLIENT_IP" );  
  6.         else   if  ( getenv ( "HTTP_X_FORWARDED_FOR" )   
  7.             && strcasecmp ( getenv ( "HTTP_X_FORWARDED_FOR" ),  "unknown" ))  
  8.            $ip  =  getenv ( "HTTP_X_FORWARDED_FOR" );  
  9.         else   if  ( getenv ( "REMOTE_ADDR" )   
  10.             && strcasecmp ( getenv ( "REMOTE_ADDR" ),  "unknown" ))  
  11.            $ip  =  getenv ( "REMOTE_ADDR" );  
  12.         else   if  (isset( $_SERVER [ 'REMOTE_ADDR' ])   
  13.             && $_SERVER [ 'REMOTE_ADDR' ]   
  14.             && strcasecmp ( $_SERVER [ 'REMOTE_ADDR' ],  "unknown" ))  
  15.            $ip  =  $_SERVER [ 'REMOTE_ADDR' ];  
  16.         else   
  17.            $ip  =  "unknown" ;  
  18.         return ( $ip );  
  19.     }  
  20.   
  21.     $ip  = GetIP();  
  22.     echo   $ip ;  
  23. ?>  
<?php
	function GetIP(){
   		if (getenv("HTTP_CLIENT_IP") 
        	&& strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
           $ip = getenv("HTTP_CLIENT_IP");
       	else if (getenv("HTTP_X_FORWARDED_FOR") 
        	&& strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
           $ip = getenv("HTTP_X_FORWARDED_FOR");
       	else if (getenv("REMOTE_ADDR") 
        	&& strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
           $ip = getenv("REMOTE_ADDR");
       	else if (isset($_SERVER['REMOTE_ADDR']) 
        	&& $_SERVER['REMOTE_ADDR'] 
            && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
           $ip = $_SERVER['REMOTE_ADDR'];
       	else
           $ip = "unknown";
   		return($ip);
	}

	$ip = GetIP();
	echo $ip;
?>
运行结果演示

你的IP为: 219.142.31.246

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值