PHP $_SERVER['HTTP_REFERER'] 獲取前一頁面的 URL 地址

PHP $_SERVER['HTTP_REFERER']

使用 $_SERVER['HTTP_REFERER'] 將很容易獲得連接到當前頁面的前一頁面的地址。一個例子以下:php

index.php(實際地址爲:http://www.5idev.com/php/index.php):html

<a href="test.php">連接</a>

test.php(實際地址爲:http://www.5idev.com/php/test.php):瀏覽器

echo $_SERVER['HTTP_REFERER'];

在瀏覽器訪問 index.php,點擊連接到 test.php,獲得的輸出結果爲:安全

http://www.5idev.com/php/index.php

PHP $_SERVER['HTTP_REFERER'] 無效

須要注意的是,$_SERVER['HTTP_REFERER'] 徹底來源於瀏覽器。並非全部的用戶代理(瀏覽器)都會設置這個變量,並且有的還能夠手工修改 HTTP_REFERER。所以,$_SERVER['HTTP_REFERER'] 不老是真實正確的。服務器

一般下面的一些方式,$_SERVER['HTTP_REFERER'] 會無效:ide

  1. 直接輸入網址訪問該網頁。
  2. Javascript 打開的網址。
  3. Javascript 重定向(window.location)網址。
  4. 使用 meta refresh 重定向的網址。
  5. 使用 PHP header 重定向的網址。
  6. flash 中的連接。
  7. 瀏覽器未加設置或被用戶修改。

因此通常來講,只有經過 <a></a> 超連接以及 POST 或 GET 表單訪問的頁面,$_SERVER['HTTP_REFERER'] 纔有效。post

因爲 $_SERVER['HTTP_REFERER'] 對 POST 表單訪問也是有效的,所以在表單數據處理頁面必定程度上能夠經過校驗 $_SERVER['HTTP_REFERER'] 來防止表單數據的惡意提交。但該方法並不能保證表單數據的絕對正確,即對錶單數據的真實性檢測並不能徹底依賴於 $_SERVER['HTTP_REFERER'] 。代理

本章節內容共分 6 部分:server

  1. 1. PHP 服務器變量 $_SERVER
  2. 2. PHP 服務器環境變量 $_ENV
  3. 3. PHP 使用 $_SERVER['PHP_SELF'] 獲取當前頁面地址及其安全性問題
  4. 4. PHP $_SERVER['HTTP_REFERER'] 獲取前一頁面的 URL 地址
  5. 5. PHP $_SERVER['PHP_SELF']、$_SERVER['SCRIPT_NAME'] 與 $_SERVER['REQUEST_URI'] 之間的區別
  6. 6. PHP $_SERVER['SCRIPT_FILENAME'] 與 __FILE__ 的區別
相關文章
相關標籤/搜索