紀錄工作經驗、相關知識,解決技術相關問題。

PHP

PHP 取得網址 – $_SERVER 使用技巧

PHP | WebSite Url

PHP | WebSite Url

在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 的參數用法做一個總整理

PHP 取得 http/https

$_SERVER['REQUEST_SCHEME'] or $_SERVER['HTTPS']

PHP 取得 domain

$_SERVER['SERVER_NAME'] or $_SERVER['HTTP_HOST']

PHP 取得目前網頁檔案名稱

$_SERVER['PHP_SELF']

PHP 取得 $_GET URL

$_SERVER['QUERY_STRING']

PHP 取得完整網址

$_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']

比較要注意的是 $_SERVER[‘REQUEST_SCHEME’] 與 $_SERVER[‘HTTPS’],有時 $_SERVER[‘REQUEST_SCHEME’] 取不到時,可以使用 $_SERVER[‘HTTPS’] 來替代。

發表迴響