2009-03-03 81 views
6

我正在創建一個網站,在一個特定頁面上,我想將用戶發回到上一頁。我對PHP/HTML相當陌生,並且一直在使用一些現有的代碼來提供想法和幫助。php/html - http_referer

現有代碼使用下面的方法:

if (! empty($HTTP_REFERER)) 
{ 
    header("Location: $HTTP_REFERER"); 
} else 
{ 
    header("Location: $CFG->wwwroot"); 
} 

然而,當我使用此代碼的HTTP_REFERER總是爲空處理,並重定向到根頁面的用戶。此代碼中有任何明顯的缺陷?

回答

13

您需要使用:

$_SERVER['HTTP_REFERER'] 
0

還要注意的是,參照標頭可能是空的或缺少無論如何,所以你不應該依賴於它在所有..

14

不要依賴HTTP Referrer是有效的甚至非空字段。人們可以選擇不使用這個集合,將該變量的任何檢查留給IF-ELSE子句的空白部分。

您可以通過在URL或會認爲,你可以用它來將用戶重定向回值POST參數沿參數發送防止這種情況。

+3

+1。推薦人天生不可靠。使用參數指導用戶希望他們在表單之後去的地方。 – bobince 2009-03-03 13:21:21

0

您應該使用

$_SERVER['HTTP_REFERER'] 

但是看看php.ini中的register_globals配置,應該因安全原因被關閉。您可以在PHP Manual site上閱讀更多信息。

1

isset($ _ SERVER [ 'HTTP_REFERER'])? $ _SERVER ['HTTP_REFERER']:'';