-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

1つは、実際に使用する前に配列インデックスを常に確認する必要があるため、次のように置き換えます。

$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']

または、値を呼び出す前に 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'];
  }
于 2013-11-11T08:20:22.490 に答える