这个PHP错误是如何发生的?

时间:2013-05-26 15:01:28

标签: php apache

在我的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中的用户

这怎么可能发生?

修改

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

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

2 个答案:

答案 0 :(得分:1)

此警告表示您正在使用数组索引“user”未定义。 在使用$ _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()。

抱歉我的英文

答案 1 :(得分:0)

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

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

也许你的会话可能会在第37行之前被某些条件执行的代码丢失,或者可能是会话本身过期。

希望它有所帮助!