PHP有一項語法可以直接取得到一般使用者IP。
$_SERVER["REMOTE_ADDR"];
但若使用者是使用proxy server(代理伺服器)上網時,則使用上面的語法會取得到代理伺服器IP,並非使用者真正的IP,因此並需先檢查以下兩個語法指令是否有存在數值。
$_SERVER["HTTP_CLIENT_IP"];
$_SERVER["HTTP_X_FORWARDED_FOR"];
若檢查上述的兩個變數並沒有數值存在,則代表使用者並非使用代理伺服器上網,因此使用『REMOTE_ADDR』就可以取得到IP。以下是程式供參考。
if (!empty($_SERVER['HTTP_CLIENT_IP']))
{
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
else if (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip=$_SERVER['REMOTE_ADDR'];
}
?>
以下是大明認為這項語法可以應用於
1、會員登入IP紀錄,檢查是否IP登入異常。
2、IP記錄,瞭解訪客使用者瀏覽哪些網頁。
3、廣告聯播檢查是否相同類似IP點擊廣告。
4、是否有相同類似IP大量攻擊網站。
5、禁止或開放指定IP連線。
|