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

PHP 獲取當前完整 URL 地址函數:支援 HTTP/HTTPS、非標準端口

     編輯:PHP 綜合知識

實用函數

<?php
/**
 * 獲取當前訪問的完整 URL
 * @return string 完整 URL
 */
function get_current_url() {
    $current_url = 'https://';
    
    // 判斷 HTTPS
    if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') {
        $current_url = 'https://';
    }
    
    // 判斷非標準端口
    if ($_SERVER['SERVER_PORT'] != '80') {
        $current_url .= $_SERVER['SERVER_NAME'] . ':' . $_SERVER['SERVER_PORT'] . $_SERVER['REQUEST_URI'];
    } else {
        $current_url .= $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
    }
    
    return $current_url;
}
?>

關鍵 $_SERVER 變量說明

變量說明示例
HTTPSHTTPS 請求時為 'on'on
SERVER_NAME伺服器主機名www.example.com
SERVER_PORT伺服器端口80, 443, 8080
REQUEST_URI請求 URI(含查詢字串)/path/page?param=value

使用範例

echo get_current_url();
// 輸出示例:
// https://www.example.com/path/page?param=value
// https://www.example.com:8443/path/page?param=value

進階增強版

function get_current_url_advanced() {
    $scheme = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? 'https' : 'http';
    $host = $_SERVER['HTTP_HOST'] ?? $_SERVER['SERVER_NAME'];
    $uri = $_SERVER['REQUEST_URI'] ?? '';
    
    // 處理代理/負載均衡器傳遞的原始協議
    if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])) {
        $scheme = $_SERVER['HTTP_X_FORWARDED_PROTO'];
    }
    
    return $scheme . '://' . $host . $uri;
}

應用場景

  • 分享連結生成
  • 支付回調 notify_url 動態構建
  • OAuth redirect_uri 參數
  • 金絲雀發布流量標記
  • 日誌記錄完整請求地址

此函數簡潔可靠,可直接納入專案公共函數庫。

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