首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 獲取伺服器路徑與訪客資訊實戰筆記

     編輯:PHP 相關知識

前言

在 PHP 開發中,經常需要動態獲取當前頁面的完整 URL、網站根目錄路徑,以及訪客的瀏覽器、作業系統、IP 位址等資訊。本文整理常用的 $_SERVER 超全域變數應用技巧,附帶可直接複製執行的代碼片段,適合初學者快速上手。

一、獲取當前完整 URL

組合 HTTP_HOST 與 PHP_SELF 即可獲得當前腳本的完整訪問路徑:

<?php
echo "PHP 獲取當前 URL<br/>";
$url = "https://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
echo $url;
?>

說明: 若網站部署在 HTTPS 環境,建議加入協定判斷:$scheme = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' ? 'https' : 'http';

二、獲取網站根目錄(專案入口路徑)

透過 strrpos 截取最後一個 / 之前的路徑,適用於單入口框架或子目錄部署:

<?php
$PHP_SELF = $_SERVER['PHP_SELF'];
$url = 'https://' . $_SERVER['HTTP_HOST'] . substr($PHP_SELF, 0, strrpos($PHP_SELF, '/') + 1);
echo $url;
?>

三、獲取訪客詳細資訊

$_SERVER 陣列包含豐富的客戶端與伺服器環境資訊,直接 print_r 即可查看所有鍵值:

<?php
// 單獨輸出某個憑證序號(若存在)
print_r($_SERVER['CERT_SERIALNUMBER']);
// 完整輸出所有伺服器/執行環境變數
print_r($_SERVER);
?>

常用鍵值速查:

  • HTTP_USER_AGENT:瀏覽器身份標識,可解析瀏覽器類型、版本、作業系統
  • REMOTE_ADDR:訪客 IP(注意代理/負載均衡下需檢查 HTTP_X_FORWARDED_FOR)
  • HTTP_REFERER:來源頁面 URL(不可完全信任,用戶可偽造)
  • REQUEST_URI:請求的資源路徑(含查詢字串)
  • SERVER_NAME、SERVER_PORT、SERVER_SOFTWARE:伺服器基本資訊

四、進階封裝建議

實際專案中建議封裝為工具類,例如:

class ClientInfo {
    public static function getClientIP() {
        $keys = ['HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'REMOTE_ADDR'];
        foreach ($keys as $key) {
            if (!empty($_SERVER[$key])) {
                $ips = explode(',', $_SERVER[$key]);
                return trim($ips[0]);
            }
        }
        return 'unknown';
    }
    public static function getUserAgent() {
        return $_SERVER['HTTP_USER_AGENT'] ?? '';
    }
    public static function getCurrentURL() {
        $scheme = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? 'https' : 'http';
        return $scheme . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
    }
}

五、安全提醒

所有 $_SERVER 來自客戶端的欄位(如 HTTP_* 開頭)均可被偽造,切勿直接用於權限判斷、SQL 拼接或敏感邏輯,務必經過驗證、過濾後再使用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved