'注意:未定义的索引:“出现在我从 PHP 5.2 到 5.4 之后


'Notice: Undefined index:' Appears after i traveled from PHP 5.2 to 5.4

我有一个用 PHP 5.2.9

编写的程序。 它现在在我的客户服务器上工作,该服务器在 5.2.9 年前运行 PHP 3 年至今。 一切都还好。我现在使用的是 PHP 5.4.19 .今天,当我想安装和使用我的旧程序时,此错误出现在我拥有的每个页面上。例如:

 Notice: Undefined index: fullname_sima in C:'xampp'htdocs'sima'SystemAccess.php on line 4

该代码行为:

$fullname=$_SESSION['fullname_sima'];

注意:我的程序运行良好,现在在我的客户服务器上没有错误,使用 PHP 5.3.9 。 这对我来说是正确的,如果我在本地主机上重新安装 PHP 5.2.9,一切都会恢复正常。 我已经测试过了。

任何帮助都会感激不尽!

编辑:注意:我不想使用"isset()"函数!因为我的程序很大,这个编辑会让我感到困惑!

*请注意,我的程序在 PHP 5.2.9 中运行良好,我从未在我的程序中使用过任何isset()函数。

谢谢

首先,

您应该在实际使用数组索引之前始终检查它们,因此请替换:

$fullname=$_SESSION['fullname_sima'];

用类似的东西

$fullname = ( isset($_SESSION['fullname_sima']) ? $_SESSION['fullname_sima'] : null );

您正在使用不存在的索引这一事实会导致您的错误。您现在可能只看到该错误,因为您的错误级别在升级到 5.4 期间已更改,这使得它现在显示通知。

要检查默认错误级别,请检查 php.ini 中的error_reporting = ...位。如果显示E_ALL,则默认情况下将显示所有错误。将其更改为 E_ALL ^ E_NOTICE 以仅显示错误,而不显示通知。

您也可以对函数执行相同的操作error_reporting(E_ALL ^ E_NOTICE);

可能,您只是在以前的 php 安装中禁止了通知。它也应该出现在那里。要删除它,您应该更正代码以确认缺少密钥的情况,并添加一个 if 语句:

if (isset($_SESSION['fullname_sima']))
{
    $fullname = $_SESSION['fullname_sima'];
}
else
{
    $fullname = null;
}
问题

不在于您复制的行,请检查在$_SESSION['fullname_sima']中设置值的行

或者如果在调用值之前它应该为 null,您可以检查它是否已设置

  $fullname=null; // or you can set as any other value like : $fullname=0; or $fullname='';
  if (isset($_SESSION['fullname_sima'])){
        $fullname=$_SESSION['fullname_sima'];
  }