2012-03-24 83 views
0

如何讓header("Location: /path");只重定向一次?PHP - 只重定向一次

Currenlty我有這樣的:

//If account is locked by user. 
if($userdata['account_locked'] == 1): 
    header("Location: /account/locked"); 
endif; 

這個腳本在我的頭文件檢查。但它不起作用,因爲它只會創建一個循環重定向(infinit循環)

我該怎麼辦,所以它只重定向一次?

在此先感謝。

+0

這個片段是否會出現在您即將推出的頁面上?這是一個全球支票? – Joseph 2012-03-24 11:33:49

+0

也許這將有助於: http://serverfault.com/questions/229435/how-to-break-from-infinite-loop-caused-by-php-script-running-as-root – 2012-03-24 11:34:47

+0

什麼是目的'/ account/locked'-page?如果它是某種「我同意」頁面,則應該將'$ userdata ['account_locked']'設置爲'1'。 – 2012-03-24 11:34:50

回答

1

這很簡單,但它是一個有點難看......

//If account is locked by user. 
if($userdata['account_locked'] == 1): 
    if ($_SERVER['REQUEST_URI'] != "/account/locked") header("Location: /account/locked"); 
endif; 

你應該使用MVC,控制器應該知道的循環。

EDITED 這是更好地使用

$_SERVER['PHP_SELF'] 

代替

$_SERVER['REQUEST_URI']. 

編輯:從網址更改爲URI。

+0

非常感謝!這工作。請注意,它不是$ _SERVER ['REQUEST_URL'],而是$ _SERVER ['REQUEST_URI']。在UR末尾註意我而不是L。 :-)但是,謝謝! – oliverbj 2012-03-24 11:52:40

0
if($userdata['account_locked'] == 1 && $_SERVER['HTTP_REFERER'] != 'http://'.$_SERVER['HTTP_HOST'].'/account/locked'): 
    header("Location: /account/locked"); 
endif;