2012-12-19 4 views
1

내 $ _SESSION [ 'ugid'] = 1. 그러나 왜 여전히 IF 블록에 속하는 것입니까? 내 조건문에 문제가 있습니까? 알려주십시오. 감사.PHP : IF 문에 문제가 있습니까?

if(($_SESSION['ugid']!="1")||($_SESSION['ugid']!="2")) 
{ 
    $_SESSION['error']="access"; 
    header("location:../error.php"); 
} 
+0

모든 $ _SESSION ('만약 [ 'ugid'] == "1 : 나는이 같은 뭔가를 조금 더 좋은 읽을 것 같아요 ")'. 그렇다면 단순히 AND 문으로 변경하는 것이 올바른 방법이 아닙니다. –

답변

1

사용 & & 대신 ||

if(($_SESSION['ugid']!="1")&&($_SESSION['ugid']!="2")) 
{ 
    $_SESSION['error']="access"; 
    header("location:../error.php"); 
} 
2

단순히 OR 조건을 사용하고 있기 때문입니다.

if session variable 1 doesn't equal 1 **OR** session 2 variable doesn't equal 2

분명히, 세션 2 변수가 2와 동일하지

if(($_SESSION['ugid']!="1")||($_SESSION['ugid']!="2"))

이 때문에이 코드 블록을 입력하는 판독.

1

1 인 경우 여전히 2와 다릅니다 (OR 때문에). 너 &&을 넣으려고했다고 생각합니다.

1

if(($_SESSION['ugid']!=1)||($_SESSION['ugid']!=2)) 
{ 
    $_SESSION['error']="access"; 
    header("location:../error.php"); 
} 
+0

"1"== 1은 PHP에서 true로 평가됩니다. 귀하의 답변은 어떻게 도움이됩니까? – TigOldBitties

1

어쩌면 qouted 이중으로 세션의 값을 갖는 시도하십시오. 를 제거하십시오 :

+0

"1"== 1은 PHP에서 true로 평가됩니다. 귀하의 답변은 어떻게 도움이됩니까? – TigOldBitties

+0

죄송합니다 ........ –

0

을 문이 원한다면 당신이있는 경우 :

if (expr1 || expr2) { 
    // do something 
} 

그리고 첫 번째 조건, expr1이 거짓, 다음 PHP가 두 번째 조건을 평가합니다. 이 경우 $ _SESSION [ 'ugid']! = "2"는 true이므로 if 블록의 코드를 실행합니다.

답변은 수행하려는 작업에 따라 다릅니다. 1 또는 2 만 유효한 값 (즉, 해당 값 이외의 값은 애플리케이션에서 오류) 인 경우 ||&&으로 바꿀 수 있습니다.

그들이 그 코드 블록을 입력 할 수 있어야합니다 경우 진짜 문제는
$valid_guids = array(1, 2); 
if (!in_array($_SESSION['guid'], $valid_guids)) { 
    // Error code 
}