【发布时间】:2011-10-27 08:19:54
【问题描述】:
我最近开发的一个管理网站遇到了一个非常令人沮丧的问题。我将错误处理设置为给自己发送电子邮件,并且在使用系统时随机收到多条“错误:[8] 未定义索引:用户名”消息。但是,我无法确定触发这些错误的确切操作。此外,当错误处理设置为回显时,这些消息不可见,并且网站的功能不受影响。
在我看来,问题是由会话超时引起的,而网站没有正确处理这个问题。但是,当登录名被保留一段时间然后刷新时,它确实会按预期重定向到登录页面而没有错误。
在每一页的最顶部包括:
session_start();
接下来是错误处理代码。然后是第一次检查的安全代码:
if(isset($_SESSION['loggedin']) and isset($_SESSION['username'])) {
如果失败,则调用session_destroy(); 并重定向到登录页面。
我不知道为什么我仍然收到
> Error: [8] Undefined index: username'
当 isset 检查出现在每个页面的标题中时的电子邮件!这些错误的不规则性使我无法调试。
非常感谢您对可能是什么问题的任何见解! 非常感谢:)
【问题讨论】:
-
你到底得到了什么错误,它指的是哪一行?那一行是什么代码?
-
是否可能有一个代码路径允许
$_SESSION['username']-using 代码在不被会话检查器捕获的情况下执行?可以是绕过会话检查的函数或 include()/require() 脚本。 -
没有包含这些标头的自主运行的代码。几乎所有的页面和功能都会触发这些错误,而不是一个特别的。所有的头文件和函数库都包含在每个页面的顶部,使用 include() 的
-
这个错误真的很奇怪;这不是 PHP 错误。 “and”在 PHP 中也不是有效的运算符。
-
好的,我已将其改为 &&。虽然,这不应该有什么不同,我会认为......