Heim > php教程 > php手册 > PHP下得到客户端IP的方法

PHP下得到客户端IP的方法

WBOY
Freigeben: 2016-06-21 08:58:12
Original
1126 Leute haben es durchsucht

getenv -- Gets the value of an environment variable

Description

string getenv ( string varname )

Returns the value of the environment variable varname, or FALSE on an error.

<span class="html"><span class="default"><font face="新宋体"><?php </FONT></font></span><font face="新宋体"><span class="comment">// Example use of getenv()</span><span class="default">$ip </span><span class="keyword">= </span><span class="default">getenv</span><span class="keyword">(</span><span class="string">'REMOTE_ADDR'</span></font><span class="keyword"><font face="新宋体">);<br></font></span><font face="新宋体"><span class="comment">// Or simply use a Superglobal ($_SERVER or $_ENV)</span><span class="default">$ip </span><span class="keyword">= </span><span class="default">$_SERVER</span><span class="keyword">[</span><span class="string">'REMOTE_ADDR'</span></font><font face="新宋体"><span class="keyword">];</span><span class="default">?></span> </font></span>

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

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

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

//Get the real client IP ("bullet-proof")

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);
}



Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage