首頁 php教程 php手册 获取客户端的真实ip地址的php实现方法与原理

获取客户端的真实ip地址的php实现方法与原理

May 25, 2016 pm 04:56 PM
explode

在PHP 中使用 $_SERVER["REMOTE_ADDR"] 来取得客户端的 IP 地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。要想透过代理服务器取得客户端的真实 IP 地址,就要使用 $_SERVER["HTTP_X_FORWARDED_FOR"] 来读取

(1).REMOTE_ADDR:浏览当前页面的用户计算机的ip地址

(2).HTTP_X_FORWARDED_FOR: 浏览当前页面的用户计算机的网关

(3).HTTP_CLIENT_IP:客户端的ip

在PHP 中使用 $_SERVER["REMOTE_ADDR"] 来取得客户端的 IP 地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。要想透过代理服务器取得客户端的真实 IP 地址,就要使用 $_SERVER["HTTP_X_FORWARDED_FOR"] 来读取。

不过要注意的事,并不是每个代理服务器都能用 $_SERVER["HTTP_X_FORWARDED_FOR"] 来读取客户端的真实 IP,有些用此方法读取到的仍然是代理服务器的 IP。

还有一点需要注意的是:如果客户端没有通过代理服务器来访问,那么用$_SERVER["HTTP_X_FORWARDED_FOR"] 取到的值将是空的。

实例

//经过复杂的判断与算是的获取IP地址函数

 function getIP() {
        if (getenv('HTTP_CLIENT_IP')) {
                        $ip = getenv('HTTP_CLIENT_IP'); 
                }
                elseif (getenv('HTTP_X_FORWARDED_FOR')) {
                        $ip = getenv('HTTP_X_FORWARDED_FOR');
                }
                elseif (getenv('HTTP_X_FORWARDED')) { 
                        $ip = getenv('HTTP_X_FORWARDED');
                }
                elseif (getenv('HTTP_FORWARDED_FOR')) {
                        $ip = getenv('HTTP_FORWARDED_FOR');
 
                }
                elseif (getenv('HTTP_FORWARDED')) {
                        $ip = getenv('HTTP_FORWARDED');
                }
                else {
                        $ip = $_SERVER['REMOTE_ADDR'];
                }
                return $ip;
登入後複製


更多详细内容请查看:php教程er/21/9a34bfce63448271c7b52fa168c3e40f.htm">http://www.phprm.com/phper/21/9a34bfce63448271c7b52fa168c3e40f.htm


//可以分出内网与外网站ip地址获取程序
 

 function getip_out(){
 $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 <p>更多详细内容请查看:http://www.phprm.com</p><div class="ad_580" id="ad_580"></div>
登入後複製
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1422
52
Laravel 教程
1316
25
PHP教程
1267
29
C# 教程
1239
24
PHP explode函數使用方法與報錯解決 PHP explode函數使用方法與報錯解決 Mar 10, 2024 am 09:18 AM

PHP中的explode函數是用來將字串分割成陣列的函數,它非常常用且靈活。在使用explode函數的過程中,常常會遇到一些報錯和問題,本文將介紹explode函數的基本用法並提供一些解決報錯的方法。一、explode函數基本用法在PHP中,explode函數的基本語法如下:explode(string$separator,string$stri

PHP中使用explode函數時常見的錯誤及解決方案 PHP中使用explode函數時常見的錯誤及解決方案 Mar 11, 2024 am 08:33 AM

標題:PHP中使用explode函數時常見的錯誤及解在PHP中,explode函數是用來將字串分割成陣列的常用函數。然而,由於使用不當或資料格式不正確,可能會導致一些常見的錯誤。本文將針對使用explode函數時可能遇到的問題進行分析,並提供解決方案和具體的程式碼範例。錯誤一:未傳入分隔符號參數在使用explode函數時,最常見的錯誤之一是未傳入分隔

使用explode和implode函數分割和合併字串 使用explode和implode函數分割和合併字串 Jun 15, 2023 pm 08:42 PM

在PHP程式設計中,處理字串是經常需要進行的操作。其中,分割和合併字串則是兩種常見的需求。為了更方便地進行這些操作,PHP提供了兩個非常實用的函數,即explode和implode函數。本文將介紹這兩個函數的用法,以及一些實用的技巧。一、explode函數explode函數用於將一個字串依照指定的分隔符號分割,並傳回一個陣列。其函數原型如下:arra

使用PHP函數 'explode' 將字串拆分為數組 使用PHP函數 'explode' 將字串拆分為數組 Jul 24, 2023 pm 11:09 PM

使用PHP函數"explode"將字串拆分為數組在PHP開發中,經常會遇到需要將一個字串依照指定的分隔符號進行拆分的情況。這時,我們可以使用PHP內建函數"explode"來實現字串到陣列的轉換。本文將介紹如何使用"explode"函數來拆分字串,並給出相關的程式碼範例。 "explode"函數的基本語法如下:arrayexplode(

php explode報錯怎麼辦 php explode報錯怎麼辦 Jan 18, 2023 am 10:13 AM

php explode報錯的解決方法:1、找到並打開出錯的PHP代碼;2、找到explode函數部分;3、修改代碼為“dump(explode(',',$str));die;”,也就是用逗號分割為數組即可。

PHP中如何使用explode函數分割字串 PHP中如何使用explode函數分割字串 Jun 26, 2023 pm 12:03 PM

在PHP語言中,有許多基礎函數可以幫助我們快速有效地處理字串。其中,explode函數是一個很實用的字串分割函數。它可以將一個字串依照指定的分割符分割成數組,進而進行更靈活的字串操作。在本文中,我們將會介紹PHP中如何使用explode函數來分割字串。一、explode函數格式explode函數在PHP語言的格式如下:explode(separa

使用PHP函數 'explode' 將字串拆分為多個子字串 使用PHP函數 'explode' 將字串拆分為多個子字串 Jul 25, 2023 pm 06:29 PM

使用PHP函數"explode"將字串拆分為多個子字串在PHP編程中,我們經常會遇到需要將一個字串拆分為多個子字串的情況。這時,PHP提供了一個非常方便的函數"explode",可以幫助我們輕鬆實現這個功能。 "explode"函數的語法如下:arrayexplode(string$delimiter,string$string[,in

explode()函數在PHP是什麼? explode()函數在PHP是什麼? Sep 04, 2023 pm 01:01 PM

在本文中,了解如何使用PHPExplode()函數,該函數是預先定義的內建PHP函數。 explode函數用於「將字串拆分為PHP中的explode函數使我們能夠透過break將一個字串分解成更小的內容。這種分隔符號稱為分隔符號。語法explode(分隔符號,字串,元素數)參數爆炸函數接受三個參數,其中兩個是強制的,一個是可選的。讓我們討論這三個參數。分隔符號這個字元指定臨界點或點字串將在此分割,即每當在字串中找到該字元時,它就像徵著數組中一個元素的結束和另一個元素的開始。String輸入字串

See all articles