要學習“在 PHP 中取得 IP 位址”,首先我們將研究 IP 位址。 IP 位址或網際網路通訊協定位址是連接到網路的每個系統或裝置都具有的數位位址或標籤的位址。 IP 位址被指派給每個此類裝置。這些設備使用網際網路協定進行任何類型的通訊。
廣告 該類別中的熱門課程 PHP 開發人員 - 專業化 | 8 門課程系列 | 3次模擬測驗開始您的免費軟體開發課程
網頁開發、程式語言、軟體測試及其他
以下幾點解釋IP版本:
出於安全原因,網站收集其網站訪客的 IP 位址。有一個簡單的方法可以在 PHP 中取得該位址。 PHP 中有一個特定的陣列可以幫助並傳回您機器的 IP 位址。數組稱為“$_SERVER”。它包含有關路徑、標頭和腳本位置的資訊。 Web 伺服器建立 $_SERVER 陣列所需的資訊。有時,伺服器不會建立或提供陣列所需的所有信息,它們可能會省略其中一些資訊。因此,在這種情況下可以使用另一個陣列。它被寫為“SERVER_ADDR”。此陣列傳回執行腳本的伺服器的 IP 位址。
以下是在 php 中取得 IP 位址的範例:
最簡單的方法是使用 $_SERVER 和 ‘REMOTE_ADDR’,它將傳回目前正在查看該頁面的使用者的 IP 位址。
代碼:
<?php echo 'User IP - '.$_SERVER['REMOTE_ADDR']; ?>
輸出:
另一種方法,稱為“SERVER_ADDR”,也用於檢索伺服器的 IP 位址。
代碼:
<?php // PHP program to retrieve server’s Internet Protocol address // Creating a variable to store the server address $ip_server = $_SERVER['SERVER_ADDR']; // Displaying the retrieved address echo "Server IP Address is: $ip_server"; ?>
輸出:
對上述程式的說明:上面的範例陣列 [$_SERVER] 很有幫助,因為機器未透過代理連接。如果機器透過代理伺服器連接到互聯網,PHP 中的 $_SERVER[‘REMOTE_ADDR’] 不會回傳正確的 IP 位址。它只會傳回代理伺服器和使用者或客戶端電腦的 IP 位址。在這種情況下,可以使用另一種方法來檢索正確的位址。
以下範例用於傳回正確且真實的 IP 位址,即使電腦隱藏在代理伺服器後面。它使用一對額外的 SERVER 變量,可用來取得客戶端系統或電腦的確切 IP 位址。它們被稱為 HTTP_CLIENT_IP 和 HTTP_X_FORWARDED_FOR。
代碼:
<?php function RetrieveUserIP() { if(!empty($_SERVER['HTTP_CLIENT_IP'])) { $address=$_SERVER['HTTP_CLIENT_IP']; } elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $address=$_SERVER['HTTP_X_FORWARDED_FOR']; } else { $address=$_SERVER['REMOTE_ADDR']; } return $address; } echo 'User IP Address is'.RetrieveUserIP(); ?>
輸出:
如果想了解上述程式碼的動作流程,可以參考下面的流程圖。
上述程式的說明:上面檢索 IP 位址的範例使用兩個變量,[‘HTTP_CLIENT_IP’] 和 [‘HTTP_X_FORWARDED_FOR’]。在程式中,我們第一次嘗試使用 HTTP_CLIENT_IP 直接將其從機器上取得。如果不可用,我們會嘗試使用 HTTP_X_FORWARDD_FOR 來「轉送」IP。當兩個條件都為空時,我們嘗試使用 REMOTE_ADDR 變數來取得 IP 位址。
在 php 中取得 IP 位址需要記住以下幾點:
1.當我們執行上面的程式碼時,回傳的IP位址顯示為::1。這稱為環回位址,實際上表示為 127 個零,後面跟著一個 1,即(0000….127 次….1)。如果我們要寫下來的話,就會寫成:
2.但在 IPv6 中,我們可以用簡短的形式來表示這個大標籤。因此,如果單一區塊中全為零,則可以用單一零替換。因此,當遵循上述規則時,它會變成:0:0:0:0:0:0:0:0001;
3.一樣,零可以消除,我們留下:: 0001
4.再減少為‘:: 1’,因此輸出。
上述程式碼的說明: 如果讓它們運行,它們可能不會給出任何輸出,或者可能返回運行時錯誤,因為私有域不提供其互聯網協定位址。而如果上面的程式碼在本地伺服器或本地主機上執行,例如我們使用了WAMP伺服器,它會根據IP版本提供輸出,也就是說,如果是IPv4,則Internet協定位址將為顯示為'127:0: 0:1' 而如果是IPv6,則網際網路通訊協定位址將顯示如上,即':: 1'
以上是在 PHP 中取得 IP 位址的詳細內容。更多資訊請關注PHP中文網其他相關文章!