PHP:我的IF语句出了什么问题?

时间:2012-12-19 07:17:19

标签: php

我有$_SESSION['ugid']=1。但为什么它仍属于IF块? 我的条件声明出了什么问题?

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

6 个答案:

答案 0 :(得分:2)

只是因为你正在使用OR条件。

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

这读为

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

显然,会话2变量不等于2,因此您输入此代码块。

答案 1 :(得分:1)

使用&&而不是||

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

答案 2 :(得分:1)

因为如果它是1,它仍然不同于2(因为OR)。我认为你打算放&&

答案 3 :(得分:1)

请试试这个

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

答案 4 :(得分:1)

也许你的会话价值是双重的。尝试删除它:)

答案 5 :(得分:0)

如果你有这样的if语句:

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

第一个条件expr1为假,然后PHP将评估第二个条件。在这种情况下,$ _SESSION ['ugid']!=“2”是true,因此它执行if块中的代码。

答案取决于你想要做什么。如果12是唯一有效的值(即,除了这些值之外的任何内容都是您应用中的错误),那么您可以将||替换为&&。我认为做这样的事情可能会有点好看:

$valid_guids = array(1, 2);
if ( !in_array($_SESSION['guid'], $valid_guids) ) {
    // Error code
}
相关问题