2012-03-24 73 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;