错误消息被调用后PHP丢失变量
问题描述:
我失去了我的变量$用户,一旦我打电话给我的错误函数并包含页脚文件。我在脚注中使用$ user函数来显示一些信息,但是当我去var_dump它时,它只是表示空。请注意,我正在使用某人创建的数据库框架,因此查询可能看起来很奇怪,但它具有100%的功能和安全性。错误消息被调用后PHP丢失变量
这是我的/包括/功能文件:
$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);
}
答
$user
超出范围在error()
。快速解决方法是global它。所以:
function error($input){
global $user;
// ...
}
这可能是值得在一般variable scope读了。
+0
和什么将永久修复? :) – dbf
+0
感谢您参考变量范围,它帮助,现在修复! – user1888260
这不是100%安全的,但那些bash的评论会来..;)..和这个代码有什么错?错误'函数不知道'$ user'变量是正确的,它不在'error'的范围内。 – dbf
阅读PHP变量作用域。在函数外声明的变量在其内部不会自动可见。 – DCoder
谢谢! 我遗漏了一些安全的脚本,编辑它一点:) – user1888260