2012-03-24 3 views
0

header("Location: /path");을 한 번만 리디렉션하도록하려면 어떻게해야합니까?PHP - 한 번만 리디렉션

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

이 스크립트는 내 헤더 파일에 체크 :

Currenlty 나는이 있습니다. 하지만 루프 - 리디렉션 (무한 루프)을 생성하기 때문에 작동하지 않습니다.

어떻게 할 수 있습니까? 한 번만 리디렉션됩니다.

미리 감사드립니다.

+0

이 스 니펫은 사용자가 가고있는 페이지에 나타 납니까? 이거 글로벌 수표 야? – Joseph

+0

어쩌면 도움이 될 것입니다 : http://serverfault.com/questions/229435/how-to-break-from-infinite-loop-caused-by-php-script-running-as-root –

+0

목적은 무엇입니까? '/ account/locked'-page의 내용은 무엇입니까? 어떤 종류의 "동의한다"- 페이지 일 경우'$ userdata [ 'account_locked']'를 다른 것으로 설정하고 '1'로 설정해야합니다. –

답변

1

이 간단하지만 추한 약간의 ...

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

당신은 MVC를 사용해야합니다

는 컨트롤러는 루프 알고 있어야합니다.

그것은

$_SERVER['PHP_SELF'] 

대신

$_SERVER['REQUEST_URI']. 

편집으로 사용하는 것이 좋습니다 편집 : URI에 URL에서 변경되었습니다.

+0

고마워요! 이 작동합니다. 참고로, $ _SERVER [ 'REQUEST_URL']이 아니라 $ _SERVER [ 'REQUEST_URI']입니다. UR의 끝에서 L 대신에 I를 주목하십시오. :-)하지만 고마워! – oliverbj

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