0

我正在帮助一个拥有较旧网站的客户遇到几年前编写的代码(不确定这是否相关,但我提到它以防万一)并且尽管使用了各种建议,但仍不断收到未定义的索引错误(即 isset)在网站上提到。大多数情况下,我正在从旧服务器上移动文件,该站点运行良好,所以我不确定为什么会收到此错误。我认为这与未设置变量“sessionID”有关,但我在现有代码中找不到设置它的任何地方 -

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

2 回答 2

0

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

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

这是一个 PHP 错误的例子,就像你得到的那样......

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

你有一切你需要弄清楚你是如何得到这个错误的。例如,通过查看此错误消息,我可以告诉您的是,从文件/tmp/test.php的第 2 行开始,我还没有在数组$_SESSION中定义索引sessionID

这很容易通过始终检查变量是否首先使用isset()定义来解决。

if (isset($_SESSION['sessionID']) && $_SESSION['sessionID'] != session_id()) {
    // login page 
} else {
    // admin page
}
于 2012-12-16T21:28:17.173 回答
-2

未定义的索引是一个通知,而不是一个错误。设置 error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE) 并查看是否可以解决所有问题。

于 2012-12-16T21:17:11.257 回答