PHP:我的if语句中有什么问题

  • 本文关键字:问题 语句 我的 if PHP php
  • 更新时间 :
  • 英文 :


我有我的 $_SESSION['ugid']=1。但是为什么它仍然属于if块?我的状况陈述出了问题?

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

仅仅是因为您正在使用或条件。

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,因此您要输入此代码块。

使用&&而不是||

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

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

请尝试此

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

也许将会话的值作为双qouted。尝试删除它:)

如果您有这样的if语句:

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

和第一个条件是expr1是错误的,然后PHP将评估第二个条件。在这种情况下,$ _session ['ugid']!=" 2"是 true,因此在if block中执行代码。

答案取决于您要做什么。如果12是唯一的有效值(即这些值以外的任何其他值是应用程序中的错误),则可以用&&替换||。我认为做这样的事情可能会更好:

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

最新更新