php獲取真實ip地址原理及實現


1、HTTP_X_FORWARDED_FOR 是用戶到達最終訪問地時經過的路徑訪問點(包括自身和使用的多層代理)的IP列表。依然取決於代理的設置,可通過http頭偽造

2、HTTP_CLIENT_IP 是代理服務器設置發送的HTTP頭,代表你的客戶端的真實IP。當然,人家可以選擇設置與否以及設置成什么樣。可通過http頭偽造

3、REMOTE_ADDR 是你的客戶端跟服務器“握手”時候的IP。如果使用代理,REMOTE_ADDR將顯示代理服務器的IP。可能是用戶真實IP也可能是代理IP

獲取ip地址的兩個方法:

1.超級全局變量$_SERVER['']

2getenv()函數獲取環境變量的值。(注意這個函數不支持IIS下的php)

 

下面我附上我的源碼:

<?php
function get_real_ip(){
if(getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknow")){
$ip = getenv("HTTP_CLIENT_IP");
}else if(getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknow")){
$ip = getenv("HTTP_X_FORWARDED_FOR");
}else if(getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknow")){
$ip = getenv("REMOTE_ADDR");
}else if(isset($_SERVER["REMOTE_ADDR"]) && $_SERVER["REMOTE_ADDR"] && strcasecmp($_SERVER["REMOTE_ADDR"],"unknow")){
$ip = $_SERVER["REMOTE_ADDR"];
}else{
$ip = "unknow";
}
return $ip;
}
echo get_real_ip();
?>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM