내 $ _SESSION [ 'ugid'] = 1. 그러나 왜 여전히 IF 블록에 속하는 것입니까? 내 조건문에 문제가 있습니까? 알려주십시오. 감사.PHP : IF 문에 문제가 있습니까?
if(($_SESSION['ugid']!="1")||($_SESSION['ugid']!="2"))
{
$_SESSION['error']="access";
header("location:../error.php");
}
내 $ _SESSION [ 'ugid'] = 1. 그러나 왜 여전히 IF 블록에 속하는 것입니까? 내 조건문에 문제가 있습니까? 알려주십시오. 감사.PHP : IF 문에 문제가 있습니까?
if(($_SESSION['ugid']!="1")||($_SESSION['ugid']!="2"))
{
$_SESSION['error']="access";
header("location:../error.php");
}
사용 & & 대신 ||
if(($_SESSION['ugid']!="1")&&($_SESSION['ugid']!="2"))
{
$_SESSION['error']="access";
header("location:../error.php");
}
단순히 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 인 경우 여전히 2와 다릅니다 (OR 때문에). 너 &&
을 넣으려고했다고 생각합니다.
이
if(($_SESSION['ugid']!=1)||($_SESSION['ugid']!=2))
{
$_SESSION['error']="access";
header("location:../error.php");
}
"1"== 1은 PHP에서 true로 평가됩니다. 귀하의 답변은 어떻게 도움이됩니까? – TigOldBitties
어쩌면 qouted 이중으로 세션의 값을 갖는 시도하십시오. 를 제거하십시오 :
"1"== 1은 PHP에서 true로 평가됩니다. 귀하의 답변은 어떻게 도움이됩니까? – TigOldBitties
죄송합니다 ........ –
을 문이 원한다면 당신이있는 경우 :
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
}
모든 $ _SESSION ('만약 [ 'ugid'] == "1 : 나는이 같은 뭔가를 조금 더 좋은 읽을 것 같아요 ")'. 그렇다면 단순히 AND 문으로 변경하는 것이 올바른 방법이 아닙니다. –