導航:首頁 > 編程語言 > php指定ip訪問

php指定ip訪問

發布時間:2025-09-09 17:31:19

php獲取IP地址的三個函數區別

以下資料供參考:

1、REMOTE_ADDR 瀏覽當前頁面的用戶計算機的ip地址

2、HTTP_X_FORWARDED_FOR 瀏覽當前頁面的用戶計算機的網關

3.HTTP_CLIENT_IP 客戶端的ip

在PHP 中使用 REMOTE_ADDR 來取得客戶端的 IP 地址,但如果客戶端是使用代理伺服器來訪問,那取到的就是代理伺服器的 IP 地址,而不是真正的客戶端 IP 地址。

要想透過代理伺服器取得客戶端的真實 IP 地址,就要使用 HTTP_X_FORWARDED_FOR 來讀取。

不過要注意的事,並不是每個代理伺服器都能用 HTTP_X_FORWARDED_FOR 來讀取客戶端的真實 IP,有些用此方法讀取到的仍然是代理伺服器的 IP。

還有一點需要注意的是:如果客戶端沒有通過代理伺服器來訪問,那麼HTTP_X_FORWARDED_FOR 取到的值將是空的。

⑵ PHP 獲取客戶端真實IP地址

PHP獲取客戶端真實IP地址需依據具體部署環境選擇相應方法。通常,直接貼代碼的文章往往缺乏針對不同情況的詳細說明,這可能導致系統被假IP欺騙。不過,只要合理選擇獲取方式,程序便能避免此類問題。

PHP的運行方式多樣,包括php-cgi、php-fpm、swoole、php-cli、php-mod等。php-fpm作為fast-cgi進程管理器,常與Nginx搭配使用,而php-mod通常與Apache協同工作。從PHP5.4起,PHP亦可作為內置Web伺服器運行,形成了經典搭配如LAMP、LNMP、LNMPA、IIS+PHP。

獲取客戶端真實IP地址時,關鍵在於理解數據傳遞路徑。在無代理層(如PHP內置伺服器/swoole)環境下,客戶端IP數據直接從TCP/IP協議層傳遞,故可通過標准方法如REMOTE_ADDR或getenv("REMOTE_ADDR")獲取與伺服器直接連接的IP地址。在swoole中,通過$request->server['remote_addr']同樣能獲取客戶端IP。

在Nginx代理環境中,如LNMP方案,Nginx與php的通訊依賴於Header配置。通過設置proxy_set_header X-Forwarded-For $remote_addr或proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for,可以正確獲取客戶端真實IP。若配置了X-Real-IP $remote_addr,則可通過此頭獲取IP地址。正確配置這些Header,確保在Nginx代理下獲取到實際客戶端IP。

Apache代理下,獲取IP地址則取決於Apache配置信息。通常情況下,使用$_SERVER["REMOTE_ADDR"]即可獲取真實客戶端IP。若存在Nginx作為上層代理,可在Apache中使用mod_rpaf模塊,將客戶端IP地址傳遞到X-Forwarded-For頭中。

負載均衡、雲虛擬機、Serverless等環境下,IP獲取需查閱對應負載均衡程序文檔。通常通過HTTP_CLIENT_IP、HTTP_X_FORWARDED_FOR或X-REAL-IP等標識得知客戶端IP。注意,不應對多種來源進行空值判斷,以防止被偽造者利用,實現IP欺騙。

在IIS + PHP配置中,使用$_SERVER['REMOTE_ADDR']即可獲取IP地址。總結而言,獲取客戶端真實IP地址需結合具體環境選擇合適方法,避免直接復制粘貼代碼。部分方法可能返回數組形式的IP地址,此時應避免使用正則過濾,以防誤處理IPv6地址。更多關於PHP獲取客戶端真實IP地址的詳細信息,可訪問vb.net教程、C#教程、python教程、SQL教程、access 2010教程等學習資源。

⑶ PHP獲取客戶端IP

php獲取客戶端IP地址方法總結
用php獲取客戶端IP地址的方法,具體代碼如下:
?php
$iipp=$_SERVER["REMOTE_ADDR"];
echo
$iipp;
?

///////////////////////////////////////////////
?php
$user_IP
=
($_SERVER["HTTP_VIA"])
?
$_SERVER["HTTP_X_FORWARDED_FOR"]
:
$_SERVER["REMOTE_ADDR"];
$user_IP
=
($user_IP)
?
$user_IP
:
$_SERVER["REMOTE_ADDR"];
echo
$user_IP;
?

///////////////////////////////////////////////
?php
function
get_real_ip(){
$ip=false;
if(!empty($_SERVER["HTTP_CLIENT_IP"])){
$ip
=
$_SERVER["HTTP_CLIENT_IP"];
}
if
(!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$ips
=
explode
(",
",
$_SERVER['HTTP_X_FORWARDED_FOR']);
if
($ip)
{
array_unshift($ips,
$ip);
$ip
=
FALSE;
}
for
($i
=
0;
$i
<
count($ips);
$i++)
{
if
(!eregi
("^(10|172.16|192.168).",
$ips[$i]))
{
$ip
=
$ips[$i];
break;
}
}
}
return
($ip
?
$ip
:
$_SERVER['REMOTE_ADDR']);
}
echo
get_real_ip();
?

///////////////////////////////////////////////
php獲取ip的演算法:
?php
if
($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"])
{
$ip
=
$HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
}
elseif
($HTTP_SERVER_VARS["HTTP_CLIENT_IP"])
{
$ip
=
$HTTP_SERVER_VARS["HTTP_CLIENT_IP"];
}
elseif
($HTTP_SERVER_VARS["REMOTE_ADDR"])
{
$ip
=
$HTTP_SERVER_VARS["REMOTE_ADDR"];
}
elseif
(getenv("HTTP_X_FORWARDED_FOR"))
{
$ip
=
getenv("HTTP_X_FORWARDED_FOR");
}
elseif
(getenv("HTTP_CLIENT_IP"))
{
$ip
=
getenv("HTTP_CLIENT_IP");
}
elseif
(getenv("REMOTE_ADDR"))
{
$ip
=
getenv("REMOTE_ADDR");
}
else
{
$ip
=
"Unknown";
}
echo
"你的IP:".$ip
;
?

///////////////////////////////////////////////
?php
if(getenv('HTTP_CLIENT_IP'))
{
$onlineip
=
getenv('HTTP_CLIENT_IP');
}
elseif(getenv('HTTP_X_FORWARDED_FOR'))
{
$onlineip
=
getenv('HTTP_X_FORWARDED_FOR');
}
elseif(getenv('REMOTE_ADDR'))
{
$onlineip
=
getenv('REMOTE_ADDR');
}
else
{
$onlineip
=
$HTTP_SERVER_VARS['REMOTE_ADDR'];
}
echo
$onlineip;
?

閱讀全文

與php指定ip訪問相關的資料

熱點內容
curlphpcookies 瀏覽:101
三個月學懂中醫pdf 瀏覽:753
實時發送郵件python 瀏覽:264
php數組刪除重復元素 瀏覽:565
程序員遇到一個無聊的人 瀏覽:59
dh136c25b壓縮機 瀏覽:137
程序員職業外部威脅 瀏覽:897
小米手機點系統工具文件夾就卡 瀏覽:421
app推廣暗扣是什麼意思 瀏覽:926
php多個分頁 瀏覽:109
隱藏我的電腦里的六個文件夾 瀏覽:495
溫州保稅倉發貨有溯源碼嗎 瀏覽:49
收獲app企業ID是什麼 瀏覽:995
光控台燈單片機 瀏覽:285
文檔不能加密的原因 瀏覽:155
程序員系列大全 瀏覽:360
安卓怎麼用文件升級 瀏覽:667
如何發展mc伺服器 瀏覽:169
安卓手機拍照是反的如何正過來 瀏覽:628
伺服器怎麼外接機械硬碟 瀏覽:93