2006/08/17

Get user IP in PHP

2012/09/30 更新:
以下內容不正確,請使用 $_SERVER['REMOTE_ADDR'] 取得使用者 IP 位址。

詳細請見:http://stackoverflow.com/questions/3003145/how-to-get-client-ip-address


CYJ 不要黑我啊 T口T



一般在取得使用者 IP 都是利用 $_SERVER['REMOTE_ADDR'] 這個環境變數,但是此變數只會紀錄最後一個主機 IP,所以當使用者瀏覽器有設定 Proxy 時,就無法取得他的真實 IP。

這時可以使用另一個環境變數 $_SERVER['HTTP_X_FORWARDED_FOR'] ,它會紀錄所經過的主機 IP,但是只有在使用者有透過 Proxy 時才會產生,所以可以像以下這樣寫來取得使用者真實 IP。

<?php
if (empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$myip = $_SERVER['REMOTE_ADDR'];
} else {
$myip = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
$myip = $myip[0];
}
echo $myip;
?>

1 則留言: