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エラーの例です...

Notice: 未定義のインデックス: 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 に答える