2010-12-22 5 views
2

로그인 스크립트를 작성하려고합니다. 로그인 한 후 세션 변수가 설정되고 기본 페이지에서 isLoggedIn 함수가 실행됩니다. 문제는 $ loggedIn 변수가 항상 true를 반환한다는 것입니다. 누군가 도울 수 있습니까?이 변수가 항상 true를 반환하는 이유는 무엇입니까?

function validateUser($user) 
{ 
    if(isset($user)){ 
    session_regenerate_id();//this is a security measure 
    $_SESSION['logged'] = 1; 
    $_SESSION['userid'] = $user;} 
} 
//Validates Login 
function isLoggedIn() 
{ 
    if($_SESSION['logged'] = 1) 
     return true; 
    return false; 
} 

$loggedIn = isLoggedIn(); 

if($loggedIn){ SHOW CONTENT FOR LOGGED IN USERS } 

else { show content for users not logged in } 

답변

10

당신은 할당 연산자 대신 조건 연산자===을 사용하고 있습니다.

는해야하는데 : 할당 =

if ($_SESSION['logged'] == 1) 
    return true; 

결과는 항상이 경우 사실 인 1 인 오른쪽 표현이다. :)

+0

감사합니다. 작동했지만 $ loggedIn은 항상 값 "1"을 인쇄합니다. 이유가 있습니까? – mcbeav

+0

예, $ loggedIn 값을'true'로 설정했기 때문에 PHP에서는'1'로 표시됩니다. – RabidFire

+0

글쎄, 비록 세션 변수가 1로 설정되지 않았더라도, 모든 것이 고쳐졌습니다. 도움을 청했습니다! – mcbeav

4

이것은 $ _SESSION [ 'logged']을 하나의 같음으로 설정했기 때문에 발생했습니다. 대신 이중 등호를 사용

function isLoggedIn() 
{ 
    if($_SESSION['logged'] == 1) 
     return true; 
    return false; 
} 
+0

감사합니다. 작동했는데 $ loggedIn은 항상 "1"값을 인쇄합니다. 이유가 있습니까? – mcbeav

2

을 NOT 본 ($이 _ SESSION [ '기록'] = 1) 이 맞다면 -> 경우 ($이 _ SESSION [ '기록'] == 1)

3

함수 isLoggedIn() { 경우 ($가 _ SESSION [ '기록'] = 1) // 할당 된 값 '1'$ _SESSION하는 것이 어떤가 있는지 체크되어,이 경우의 조건에서 매우 [ '기록'] 값은 $ _SESSION [ 'logged']이며 모든 경우에 유효합니다 (유효/무효) return true; false를 반환합니다. }

$ loggedIn = isLoggedIn()/$ loggedIn 대한 이러한 값

변경하는 경우 ($가 _ SESSION [ '기록'= 1)로하는 경우 ($가 _ SESSION는 [ '기록 항상 참이어야한다 '] == 1)

관련 문제