【问题标题】:PHP losing variable after an error message is called调用错误消息后PHP丢失变量
【发布时间】:2013-03-21 18:48:27
【问题描述】:

一旦我调用错误函数并包含页脚文件,我就会丢失我的变量 $user。我在页脚中使用 $user 函数来显示一些信息,但是当我转到 var_dump 时,它只是显示为 null。请注意,我使用的是某人创建的数据库框架,因此查询可能看起来很奇怪,但它是 100% 的功能和安全的。

这是在我的 /includes/functions 文件中:

$user_query = $db->query("SELECT * FROM `users` WHERE `id`='$_COOKIE[id]' LIMIT 1");
$user = $db->getArray($user_query);

function error($input){

            echo '<div id="error_box"><h1>Ooops!</h1><br>
             '.$input.'<br /><a href="javascript:history.go(-1)"><b>Back to previous page.</b></a></div>';

   require_once('./layout/footer.php');
   die;

}

我的 /layout/footer.php 文件是:

         if (!empty($user['active'])){

           //info here

         }
         else {

            //info here

            var_dump($user);

         }

【问题讨论】:

  • 这不是 100% 安全的,但是那些 bash cmets 会出现 .. ;) .. 这段代码有什么问题? error函数不知道$user变量是正确的,它不在error的范围内
  • 阅读 PHP 变量范围。在函数外部声明的变量在函数内部不会自动可见。
  • 谢谢!我省略了一些对其进行安全保护的脚本并对其进行了一些编辑:)

标签: php die


【解决方案1】:

$user 超出了error() 的范围。快速修复是global 它。所以:

function error($input){
   global $user;
   // ...
}

一般来说,variable scope 可能值得一读。

【讨论】:

  • 感谢对变量范围的引用,它有帮助,现在已修复!
猜你喜欢
  • 1970-01-01
  • 2015-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-01
  • 1970-01-01
  • 2023-01-23
  • 2022-11-03
相关资源
最近更新 更多