如何在Laravel中獲取伺服器IP?


伺服器IP地址就是您連線到的伺服器的IP地址。當您使用Laravel獲取伺服器IP時,您可以使用`$_SERVER['SERVER_ADDR']`。

`$_SERVER`變數在PHP中充當全域性變數。它包含諸如標頭資訊、指令碼位置和其他雜項詳細資訊等內容。

示例1

以下示例檢索`$_SERVER`全域性變數的詳細資訊。

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class StudentController extends Controller { public function index() { print_r($_SERVER); } }

輸出

執行此操作將生成以下輸出:

Array (
   [DOCUMENT_ROOT] => C:\xampp\htdocs\laraveltest\public
   [REMOTE_ADDR] => 127.0.0.1
   [REMOTE_PORT] => 61705
   [SERVER_SOFTWARE] => PHP 7.3.33 Development Server
   [SERVER_PROTOCOL] => HTTP/1.1
   [SERVER_ADDR] => 127.0.0.1
   [SERVER_NAME] => 127.0.0.1
   [SERVER_PORT] => 8000
   [REQUEST_URI] => /test
   [REQUEST_METHOD] => GET
   [SCRIPT_NAME] => /index.php
   [SCRIPT_FILENAME] => C:\xampp\htdocs\laraveltest\public\index.php
   [PATH_INFO] => /test
   [PHP_SELF] => /index.php/test
   [HTTP_HOST] => 127.0.0.1:8000
   [HTTP_CONNECTION] => keep-alive
   [HTTP_CACHE_CONTROL] => max-age=0
   [HTTP_SEC_CH_UA] => " Not A;Brand";v="99", "Chromium";v="102", "Google Chrome";v="102"
   [HTTP_SEC_CH_UA_MOBILE] => ?0
   [HTTP_SEC_CH_UA_PLATFORM] => "Windows"
   [HTTP_UPGRADE_INSECURE_REQUESTS] => 1
   [HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36
   [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
   [HTTP_SEC_FETCH_SITE] => none
   [HTTP_SEC_FETCH_MODE] => navigate
   [HTTP_SEC_FETCH_USER] => ?1
   [HTTP_SEC_FETCH_DEST] => document
   [HTTP_ACCEPT_ENCODING] => gzip, deflate, br
   [HTTP_ACCEPT_LANGUAGE] => en-US,en;q=0.9
   [HTTP_COOKIE] => XSRF-TOKEN=eyJpdiI6IlJCKzMwdE9FeGhnck1ycllPOHh2RGc9PSIsInZhbHVlIjoiUUw0cWdGeHlXeStSY3pQcWFGTmI5YnpaaDdpanFYSW1lUkNzNUxNTDdnUk5BT0ZjdHVqK1YxM256aUN4Z0hJTGdObytoYUlKTjVpZ0ttU3pEbGlxdXd0Z3JsMDA2bGF3YnBRTUoxb0FUVklRekVmMHNVRmk4TUFwbG4vMzlNMU4iLCJtYWMiOiI5MmZmYTkxYzhiOWFmNTdkNTJiZjQyZmFhYWQyZTgyMTM2M2NmNGFkNzdkNjA0NTY3M2QwYTk2OTI1NzE4OTlkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6IlZGcmxOZ0xUcnF1bUh2K2pqV1hraWc9PSIsInZhbHVlIjoiSCtqbFErN0lxUksyNzBFZkxZa3p1Q3RHRzZVVDcrd1JZRDJsaEh6eW5RNWFJUS85NzFtb21ray95bXZuZDY4dU52TWxUUVJacURCTy9ERjV2VTBiS2FFdFFsQ2MrclFkejBPaG5lNDlyNGV5M253R2o2UGZJRmxmRjgrVmV5NFIiLCJtYWMiOiJlMGU3ZWY5YTUxZjY3ZjEzNzc0MzViMTUwYTgxYmJmNjY4N2I2NmM3NjJjNzkwMGEyZDhlNmYxY2EwMDkxYjE4IiwidGFnIjoiIn0%3D
   [REQUEST_TIME_FLOAT] => 1653728150.9227
   [REQUEST_TIME] => 1653728150
)

`$_SERVER`全域性變數的輸出包含SERVER_NAME、SERVER_ADDR、SERVER_PORT等。

示例2

以下是如何使用`$_SERVER['SERVER_ADDR']`獲取伺服器IP的示例:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Collection; class UserController extends Controller { public function index() { echo $_SERVER['SERVER_ADDR']; } }

輸出

127.0.0.1

使用SERVER_ADDR

除了使用全域性`$_SERVER`變數外,Laravel還提供了一個request()物件,它可以使用SERVER_ADDR作為鍵來返回伺服器IP。您還可以使用ip()方法和request(),如下例所示。

示例1

以下示例將值SERVER_ADDR傳遞給request()->server()方法。

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class UserController extends Controller { public function index() { echo request()->server('SERVER_ADDR'); } }

輸出

127.0.0.1

示例2

以下示例嘗試使用request()->ip()方法檢索IP地址。

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\Student; //use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\DB; use Illuminate\Support\Collection; class StudentController extends Controller { public function index() { echo request()->ip(); } }

輸出

以上程式碼的輸出是:

127.0.0.1

更新於:2022年8月29日

6K+ 瀏覽量

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告