在PHP 中語法中並沒有一個語法可以直接取得目前的完整網址,如果想要取得目前網站的完整的網址,可以使用 $_SERVER 組合出來,$_SERVER 中包含了取多資料,如果想更進一步了解可以查看 PHP 官方 $_SERVER 文件,這邊就針對網址來做說明。
PHP $_SERVER URL相關參數
假設,目前我們所在的網址為
https://www.example.com/ex1/index.php
?a=1&b=2
PHP $_SERVER 取得 http/https
<?php
// 方法一
echo $_SERVER['REQUEST_SCHEME'];
// 方法二
echo isset($_SERVER['HTTPS']) && !empty($_SERVER['HTTPS']) ? 'https' : 'http';
?>
顯示結果
https
PHP $_SERVER 取得 domain
<?php
echo $_SERVER['SERVER_NAME']; // 方法一
echo $_SERVER['HTTP_HOST']; // 方法二
?>
顯示結果
www.example.com
PHP $_SERVER 取得 domain 之後的 URL
<?php
echo $_SERVER['REQUEST_URI'];
?>
顯示結果
/ex1/index.php?a=1&b=2
PHP $_SERVER 取得目前網頁檔案名稱
<?php
echo $_SERVER['PHP_SELF'];
?>
顯示結果
/ex1/index.php
PHP $_SERVER 取得 $_GET URL
<?php
echo $_SERVER['QUERY_STRING'];
?>
顯示結果
PHP $_SERVER 取得完整 URL
<?php
echo $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
?>
顯示結果
https://www.example.com/ex1/index.php?a=1&b=2
$_SERVER 用法總結
想使用 PHP 取得目前網頁的完整 URL,只需使用 $_SERVER 即可,以下我們將 $_SERVER 中有關 URL 的參數用法做一個總整理
$_SERVER['REQUEST_SCHEME'] or $_SERVER['HTTPS']
$_SERVER['SERVER_NAME'] or $_SERVER['HTTP_HOST']
$_SERVER['PHP_SELF']
$_SERVER['QUERY_STRING']
$_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']
比較要注意的是 $_SERVER[‘REQUEST_SCHEME’] 與 $_SERVER[‘HTTPS’],有時 $_SERVER[‘REQUEST_SCHEME’] 取不到時,可以使用 $_SERVER[‘HTTPS’] 來替代。
發表迴響