PHP未定义索引错误 - isset似乎没有减轻

时间:2012-12-16 21:10:56

标签: php undefined-index

我正在帮助一个旧网站的客户端遇到几年前编写的代码(不确定这是否相关,但我提到它以防万一)并继续获得未定义的索引错误,尽管使用网站上提到的各种建议(即isset)。大多数情况下,我正在从较旧的服务器移动文件,网站工作正常,所以我不知道为什么我收到此错误。我假设与变量'sessionID'没有设置有关,但我找不到现有代码中的任何位置 -

<?php
session_start();
error_reporting(E_ALL);
if ($_SESSION['sessionID'] != session_id() || !$_SESSION['userID']) { 
// login page   
} else {
// admin page
}
?>

2 个答案:

答案 0 :(得分:0)

PHP错误包含调试问题所需的所有信息。它提供:

  1. 错误级别(E_WARNING,E_NOTICE,E_ERROR等......)。
  2. 通常描述问题的短消息(在您的情况下,未定义的索引以及使用未定义索引的变量的名称)。
  3. 发生错误的PHP脚本的名称(这包括系统上脚本的完整路径,以便您可以轻松找到它)。
  4. 调用错误处理程序的行号(这正是该文件中发生错误的位置)。
  5. 这是一个像你得到的PHP错误的例子......

      

    注意:未定义的索引:第2行/tmp/test.php中的sessionID

    您拥有所需的一切,可以弄清楚您是如何得到此错误的。我可以通过查看此错误消息告诉您,例如,文件中的第2行 /tmp/test.php 我没有定义索引数组 $ _ SESSION 中的 sessionID

    通过始终检查变量是否首先使用isset()来定义,可以轻松解决这个问题。

    if (isset($_SESSION['sessionID']) && $_SESSION['sessionID'] != session_id()) {
        // login page 
    } else {
        // admin page
    }
    

答案 1 :(得分:-2)

未定义的索引是通知,而不是错误。设置error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE)并查看是否修复了所有内容。