如果在PHP中捕获地狱?

时间:2011-10-26 13:50:17

标签: php

好的原谅我在这里的写作技巧,但我似乎无法理解为什么这段代码能够识别出来然后却无法识别其他东西。

我的代码:

if (!isset($id)) {
      $_SESSION["logged_in"] = False;
      printf("Could not retrieve records: %s\n", mysqli_error($mysqli));
     if ($_SESSION["logged_in"] = False)
        { echo "session variable is set at False"; }
     if ( $_SESSION["logged_in"] = True)
        { echo "session variable is set at True"; }
  }

现在正如我所看到的,如果它完全输入这段代码,那么首先应该将变量设置为“false”。在某些代码未显示的其他位置它被设置为true并且该部分工作正常但是当我尝试将其强制设置为虚假设置时它仍然是真的..任何人都可以看到为什么这不会被设置为“False”在此指向执行?

4 个答案:

答案 0 :(得分:7)

您应该在==进行比较,而不是=进行分配:

if ($_SESSION["logged_in"] = False)
//         ---------------^^^
// Should be
if ($_SESSION["logged_in"] == False)

// Also here:
if ( $_SESSION["logged_in"] = True)
//--------------------------^^
// Should be
if ($_SESSION["logged_in"] == True)

答案 1 :(得分:1)

通过在if语句中分配变量而不是比较它,你犯了一个经典的错误。因此,将if语句更改为:

if ($_SESSION["logged_in"] == false) 

而不是(你指定的地方):

if ($_SESSION["logged_in"] = false) 

顺便说一下,你的声明现在有一些重复,因为变量本身已经是假的。因此,无需针对布尔值进行检查。所以,这就足够了:

if ($_SESSION["logged_in"])  //equals true if user is logged in
if (!$_SESSION["logged_in"])  // equals true if user is NOT logged in

答案 2 :(得分:0)

您需要==或===

使用=表示等于:)

if (!isset($id)) {
      $_SESSION["logged_in"] = False;
      printf("Could not retrieve records: %s\n", mysqli_error($mysqli));
     if ($_SESSION["logged_in"] == False)
        { echo "session variable is set at False"; }
     if ( $_SESSION["logged_in"] == True)
        { echo "session variable is set at True"; }
  }

答案 3 :(得分:0)

您应该在if语句中使用==运算符而不是=

EG

if ($_SESSION["logged_in"] == False)