-3

我有一个用 PHP 5.2.9 编写的程序。它现在在我的客户服务器上为我工作,该服务器在 3 年前运行 PHP 5.2.9 到现在都很好。一切都好。我现在使用 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()在我的程序中使用过任何函数。*

谢谢

4

3 回答 3

4

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

$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);

于 2013-11-11T08:12:23.020 回答
2

可能,您只是在以前的 php 安装中抑制了通知。它也应该出现在那里。要删除它,您应该更正您的代码以防丢失密钥,并添加一条if语句:

if (isset($_SESSION['fullname_sima']))
{
    $fullname = $_SESSION['fullname_sima'];
}
else
{
    $fullname = null;
}
于 2013-11-11T08:13:34.460 回答
0

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

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

  $fullname=null; // or you can set as any other value like : $fullname=0; or $fullname='';
  if (isset($_SESSION['fullname_sima'])){
        $fullname=$_SESSION['fullname_sima'];
  }
于 2013-11-11T08:20:22.490 回答