使用PHP獲取用戶IP
在很多Web應用中,需要獲取用戶的IP地址來進行后續(xù)處理,比如記錄用戶訪問日志。PHP提供了一種獲取用戶IP地址的方法,可以輕松的獲取到用戶的IP。
做法很簡單,只需要通過環(huán)境變量獲取到用戶連接的IP地址就可以了。在開發(fā)中,我們常用的環(huán)境變量有:
<?php echo $_SERVER['HTTP_HOST']; echo $_SERVER['REMOTE_ADDR']; echo $_SERVER['HTTP_USER_AGENT']; ?>
其中$_SERVER['REMOTE_ADDR']就是獲取用戶的IP地址。
有時候需要獲取到用戶連接所使用的端口,可以通過$_SERVER['REMOTE_PORT']獲取到:
<?php echo $_SERVER['REMOTE_PORT']; ?>
有時候我們在使用負載均衡服務器的時候,需要獲取到用戶真正的IP地址,可以通過如下代碼獲取用戶的真實IP地址:
<?php $realip = ''; if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){ $arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); foreach($arr as $ip){ $ip = trim($ip); if($ip != 'unknown'){ $realip = $ip; break; } } }elseif(isset($_SERVER['HTTP_CLIENT_IP'])){ $realip = $_SERVER['HTTP_CLIENT_IP']; }else{ $realip = $_SERVER['REMOTE_ADDR']; } echo $realip; ?>
如上代碼就是獲取用戶的真實IP地址,首先判斷是否存在HTTP_X_FORWARDED_FOR變量,如果存在,則說明用戶連接時使用了代理服務器,那么就需要通過該變量獲取用戶的真實IP地址。如果不存在HTTP_X_FORWARDED_FOR變量,則直接獲取HTTP_CLIENT_IP和REMOTE_ADDR變量中的IP地址即可。
在實際的開發(fā)中,獲取用戶的IP地址是個非常常見的操作,需要注意的是,在使用環(huán)境變量$_SERVER時,需要保證服務器環(huán)境中沒有被篡改,否則獲取到的IP地址可能是不正確的。