$_SERVER['HTTP_REFERER']的使用


轉載:http://www.5idev.com/p-php_server_http_referer.shtml

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

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

<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'] 會無效:

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

所以一般來說,只有通過 <a></a> 超鏈接以及 POST 或 GET 表單訪問的頁面,$_SERVER['HTTP_REFERER'] 才有效。

由於 $_SERVER['HTTP_REFERER'] 對 POST 表單訪問也是有效的,因此在表單數據處理頁面一定程度上可以通過校驗 $_SERVER['HTTP_REFERER'] 來防止表單數據的惡意提交。但該方法並不能保證表單數據的絕對正確,即對表單數據的真實性檢測並不能完全依賴於 $_SERVER['HTTP_REFERER'] 。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM