2015-01-12 2 views
0
<?php 
if($_SESSION['IS_LOGEDIN'] == 'Y') 
{ 
header("location:index.php?page=home"); 
exit(); 
} 
?> 

해당 로그인 코드와이 오류가있어서 해당 페이지에 가고 싶습니다.세션이 이미 시작되었습니다. session_start()를 무시하고 있습니다. Xampp

session_start()를 무시하고 세션이 이미 시작되었습니다.

나는 이런 식으로 코드를 만들려고하지만 페이지에 가고 싶어 할 때,로드하지 않습니다

<?php 
    if(!isset($_SESSION['IS_LOGEDIN']) == 'Y') 
    { 
     session_start(); 
header("location:index.php?page=home"); 
    exit(); 
    } 
?> 

솔루션은 무엇입니까?

+0

가 세션을 파괴하려고 할 수 있을까? – NoLiver92

+0

include/required 파일 내에'session_start();'를 포함했다면, 그럴 수 있습니다. session_start();를 맨 위에 놓아야합니다. 게다가이 if (! isset ($ _ SESSION [ 'IS_LOGEDIN']) == 'Y')'2 개의 조건문을 사용해야합니다. 설정되지 않았 으면'&&'와 같음을 확인하십시오. –

답변

2

귀하의 코드는 플랫 아웃 잘못 :

if(!isset($_SESSION['IS_LOGEDIN']) == 'Y') 
    session_start() 

당신은 당신이 세션에서 (아마도)의 값을 테스트하려고 후 세션을 시작합니다. 또한 isset()은 부울 true/false를 반환합니다. 그것은 결코 문자열을 돌려주지 않을 것이고, NOT은 당신이 테스트하고있는 변수에 어떤 값을 설정해도 상관 없다. 그래서 기본적으로 당신은 if (true/false == 'Y')을 가지고 있습니다.

session_start() 
if (!isset($_SESSION['IS_LOGEDIN']) || ($_SESSION['IS_LOGEDIN'] != 'Y')) { 
    header('....'); 
} 

"사용자가 로그인하지 않았거나 로그인하지 않은 경우, 다음 리디렉션"

당신은 아마 이런 식으로 뭔가를 할 수 있습니다. 가 로그 아웃 할 때

+1

정확히 말했듯이; * 매우 많은 단어 * ;-) –

+0

또는 그 역의 등가'if (isset ($ _ SESSION [ 'IS_LOGEDIN']) && ($ _SESSION [ 'IS_LOGEDIN'] == 'Y')) {// do something} else {// 뭔가 다른 것을해라}', 아마도 OP가 얻고 자하는 것이 겠지요. OP가 무엇을 달성하기를 원하는지에 관해서는 약간 불분명하다. 그들은 두 개의 서로 다른 코드 블록을 게시했습니다. 어느 쪽이 좋든/나쁘 든, 둘 다 유지하는 것은 누구나 짐작할 수 있습니다. * 세션은 이미 시작되었습니다. * 보통은 다른 곳에서'session_start();'의 복사본이 있다는 뜻입니다. –

0

당신은

<?php 
session_start(); //must be at the start of the page 
     if(!isset($_SESSION['IS_LOGEDIN']) or empty($_SESSION['IS_LOGEDIN'])) { 
     $_SESSION['IS_LOGEDIN'] = 'Y'; 
     header("location:index.php?page=home"); 
    exit(); 
     } 
    ?> 
관련 문제