2013-10-09 1 views
1

이 코드에는 무한 루프 문제가 있습니다. 그것은 세션 변수가 있는지 확인하고, 그렇지 않다면 인덱스 페이지로 리디렉션되도록하고 싶습니다.PHP 로그인하지 않은 무한 루프

session_start(); 
    if (! isset($_SESSION['foo'])) { 
    header('Location: /index.php'); 
    } 
exit; 

나는 출구를 두어 보았습니다. 및 exit(); 및 endif; if 루프 외부와 내부에서 모든 것이 여전히 나에게 무한 루프 문제를 안겨주고있다. 이 코드는 모든 페이지에서 호출되는 헤더 페이지에 있습니다. 로그인하지 않은 경우에만 인덱스 페이지에 액세스 할 수 있습니다. 이것이이 코드가 처음부터 존재하기를 원했던 요지입니다.

미리 도움을 주셔서 감사합니다.

+0

이 코드는 모든 페이지에있는 헤더 페이지에 있음을 언급했다. 이 코드가 색인 페이지에도있는 경우 색인 페이지는 세션 변수를 확인하여 hte 무한 루프로 연결됩니다. – docaholic

답변

3

if 문에 index.php 페이지를 제외시키는 내용을 추가하십시오. 비슷한 것

if(! isset($_SESSION['foo']) && strpos($_SERVER['REQUEST_URI'], 'index.php') === false) { 
    header('Location: /index.php'); 
} 
+0

나는 request_uri 같은 테스트를하지 않을 것입니다. 간단히 말해'http : //example.com/realpage.php? haha_Im_in_ur_sitez = index.php'와 같이 무단 페이지에 액세스 할 수 있습니다. –

+0

대단히 고마워요. 네가 여기서 말하려고하는 것을 이해한다. 나는 당신의 대답을 따라 가고 그에 따라 제 코드를 바꿀 것입니다. Marc이 request_uri를 이와 같이 사용하지 않겠다고 말했지만, 이것이 작동하는지는 알 수 있습니다. – ChaseC

0

인덱스 페이지에서 확인하면 세션이 설정되지 않을 때마다 루프가 리디렉션됩니다. 이 확인이 index.php에 이루어지지 않았는지 확인해야합니다.

+0

기본적으로 귀하의 답변이 말하는 것입니다. 따라서 색인에서 오는 경우 리디렉션을해서는 안됩니다. 고맙습니다!! – ChaseC

0

나는 session_start()가 누락 된 것 같습니다.

page.php :

<?php 
session_start(); // this is important 
if (! isset($_SESSION['foo'])) { 
    header('Location: /index.php'); 
    exit; 
} 
?> 

의 index.php는 :

<?php 
session_start(); // this is important 

//stuff 

$_SESSION['foo'] = 'stuff'; 

//other stuff 
?> 
+1

나는 그것을 코드에 포함하는 것을 잊어 버렸다. 나는 매우 미안 해요. 네가 가진 것처럼 if 문 앞에 거기에있다. 그래도 고마워! 당신은 최고입니다 : D 조 – ChaseC