ホームページ  >  記事  >  バックエンド開発  >  3. PHP での未定義のインデックス プロンプトに対するいくつかの解決策

3. PHP での未定義のインデックス プロンプトに対するいくつかの解決策

WBOY
WBOYオリジナル
2016-06-23 13:14:13877ブラウズ

1. 関連情報

  • 通常 $_post[''] または $_get[''] を使用してフォーム内のパラメーターを取得する場合、注意: 未定義のインデックス: --------;
  • そして私たちは、フォーム POST からデータを受信するときに、よく未定義のインデックス エラーを受け取ります
例: $act=$_POST['action']; 上記のコードを使用すると、常に注意を促すメッセージが表示されます: 未定義のインデックス: D:testpost で動作します。 php の 20 行目で、場合によっては「通知: 未定義の変数: 送信...」などのリマインダーが表示されます。上記はエラーではなく PHP のプロンプトであり、事前に変数を宣言しなくても PHP 自体を直接使用できますが、将来的には、変数を宣言するときにプロンプ​​トが表示されます。通常、正式な Web サイトではプロンプトがオフになり、エラー メッセージもオフになります。

2. 問題の説明

つまり、PHP はデフォルトで未宣言の変数の入力を求めるプロンプトを表示しますが、このデフォルトのプロンプトは無視できます

3. 解決策

方法 1: サーバー構成の変更

以下のエラー表示モードを変更します。 php.ini のエラー設定: error_reporting = E_ALL を error_reporting = E_ALL & ~E_NOTICE に変更します。
  1. 変更を有効にするには、Apache サーバーを再起動します。
  2. 方法 2: 変数を初期化する

つまり、変数を定義した後、その変数に対して特定の初期化を実行しますが、これでは変数がイベント駆動によって初期化されたかどうかを判断できません

方法 3: isset ($_post[ '']), empty($_post['']) if --else 判定

方法4:通知コードが表示される前に @

@ を追加して、この行にエラーがある、または出力しない警告があることを示します例: @$username=$_post['username']; if (@$_GET['action']=='save') { ...

のように、変数の前に @ を追加します。このステートメントの場合 警告リマインダーが表示されても出力はありません
  • 方法 5: value メソッドを置き換える関数を自分で作成する

関数のコードは次のとおりです:

function _get($str){ $val = !empty($_GET[$str]) ? $_GET[$str] : null; return $val; }

それを使用するときは、_get( $_GET ['str'] の代わりに 'str') 大丈夫です~

4. 分析の概要

PHP は優れたリマインダー機構を提供しますが、それは私たちが望むものではない可能性があります

上記の方法 4 を使用することをお勧めします。リマインダーが来たときに処理され、PHP によって提供されるリマインダー メカニズムも保持されます

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。