先來了解一個變量的含義:
$_SERVER['REMOTE_ADDR']:瀏覽當前頁面的用戶計算機的ip地址
$_SERVER['HTTP_CLIENT_IP']:客戶端的ip
$_SERVER['HTTP_X_FORWARDED_FOR']:瀏覽當前頁面的用戶計算機的網關
$_SERVER['HTTP_X_REAL_IP']:nginx 代理模式下,獲取客戶端真實IP
/** * 獲取客戶端IP地址 */function real_ip(){ $ip = $_SERVER['REMOTE_ADDR']; if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && preg_match_all('#/d{1,3}/./d{1,3}/./d{1,3}/./d{1,3}#s', $_SERVER['HTTP_X_FORWARDED_FOR'], $matches)) { foreach ($matches[0] AS $xip) { if (!preg_match('#^(10|172/.16|192/.168)/.#', $xip)) { $ip = $xip; break; } } } elseif (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('/^([0-9]{1,3}/.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP'])) { $ip = $_SERVER['HTTP_CLIENT_IP']; } elseif (isset($_SERVER['HTTP_CF_CONNECTING_IP']) && preg_match('/^([0-9]{1,3}/.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CF_CONNECTING_IP'])) { $ip = $_SERVER['HTTP_CF_CONNECTING_IP']; } elseif (isset($_SERVER['HTTP_X_REAL_IP']) && preg_match('/^([0-9]{1,3}/.){3}[0-9]{1,3}$/', $_SERVER['HTTP_X_REAL_IP'])) { $ip = $_SERVER['HTTP_X_REAL_IP']; } return $ip;}
總結
以上所述是小編給大家介紹的PHP 獲取客戶端 IP 地址的方法實例代碼,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!
新聞熱點
疑難解答
圖片精選