PHP $_SERVER['HTTP_REFERER'] 獲取前一頁面的 URL 地址
轉載: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'] 會無效:
直接輸入網(wǎng)址訪問該網(wǎng)頁。
Javascript 打開的網(wǎng)址骑晶。
Javascript 重定向(window.location)網(wǎng)址痛垛。
使用?meta refresh?重定向的網(wǎng)址。
使用 PHP header 重定向的網(wǎng)址桶蛔。
flash 中的鏈接匙头。
瀏覽器未加設置或被用戶修改。
所以一般來說仔雷,只有通過 超鏈接以及?POST?或?GET?表單訪問的頁面蹂析,$_SERVER['HTTP_REFERER'] 才有效舔示。
由于 $_SERVER['HTTP_REFERER'] 對 POST 表單訪問也是有效的,因此在表單數(shù)據(jù)處理頁面一定程度上可以通過校驗 $_SERVER['HTTP_REFERER'] 來防止表單數(shù)據(jù)的惡意提交电抚。但該方法并不能保證表單數(shù)據(jù)的絕對正確惕稻,即對表單數(shù)據(jù)的真實性檢測并不能完全依賴于 $_SERVER['HTTP_REFERER'] 。