0

在我的index.php,我有这样的东西(简化):

session_start();

// some code, login, etc

if (!isset($_SESSION['user'])){ die(); }

// continues

include('function.prepare.foodlist.session.php');

// more code

然而,在我的 apache2 的错误日志中,有时会返回此错误(我无法亲自重现它,但有时会发生在其他用户身上):

PHP 通知:未定义索引:第 37 行 /path/to/function.prepare.foodlist.session.php 中的用户

这怎么可能发生?

编辑

根据请求,文件中的第 37 行function.prepare.foodlist.session.php显示:

`foodlist-categories`.`name-".$_SESSION['user']['language']."` as `catname`
4

2 回答 2

1

此警告表明您使用的数组索引“用户”未定义。在使用 $_SESSION['user'] 之前,您应该检查索引/键 'user' 是否在数组 $_SESSION 中。

if (isset($_SESSION['user']['language'])) {
    //do something with $_SESSION['user']['language'] like your code:
    `foodlist-categories`.`name-".$_SESSION['user']['language']."` as `catname`
} else {
    // default
   `foodlist-categories`.`name-en` as `catname`
}

可能是一个尚未签名的用户,或者哪个 cookie 过期,或者您在此行之前取消了 $_SESSION['user'],或者您再次调用 session_start()。

对不起我的英语不好

于 2013-05-26T15:13:41.033 回答
0

实际上可能很难建议从哪里调用 function.prepare.foodlist.session.php 但为了避免这个通知,也许你可以在第 37 行之前添加 isset() ,例如:

if (isset($_SESSION['user'])) {
  // line 37
  // etc.
}

也可能是您的会话可能在第 37 行之前因某些有条件执行的代码而丢失,或者会话可能自行到期。

希望能帮助到你!

于 2013-05-26T15:23:05.170 回答