0

私はいくつかのphpチュートリアルを見ていますが、それらの多くは次のようなものから始まります:

<?php
 if(!$_POST['username']){
  ..
  ..
 };
?>

また

<?php
 $username = $_POST['username'];
  ..
  ..
?>

しかし、初めてページにアクセスするたびに、 $_POST['username'] が初期化されていないため、エラーが出力されます。どうすればこれを修正できますか?

ありがとう

4

6 に答える 6

1

Web サーバーにリクエストを送信するときに使用できる主な HTTP メソッドは、GET、POST、DELETE、および PUT の 4 つです。これらのそれぞれを使用して、PHP がアクセスを許可するリクエストで変数を渡すことができます。GETとの場合、それぞれPOST対応する配列$_GET&で変数にアクセスできます$_POST

これまで HTTP メソッドを扱ったことがない場合は、それについて深く考える必要がないからです。これは、ブラウザに URL を入力して [go] をクリックすると、GETデフォルトでメソッドが使用されるためです。

したがって、この場合、おそらく何が起こっているかというとPOST、ページをロードするときにまったくリクエストを行っていないということです。たとえそうであったとしても、それにPOSTアクセスするには適切な変数を定義する必要があります。この例ではusername.

上記のいずれかが当てはまらないため、変数の値は null です。また、PHP で null 値にアクセスしようとすると、スクリプトはエラーをスローします (ご覧のとおり)。これは変更できますが、お勧めしません。コードを書くときに null 変数を適切に処理していることを知りたいです。しかし、それは私だけかもしれません。

私が推奨し、他の人が提案した解決策は、isset()関数を使用して変数が定義されているかどうかを確認することです。これにより、コードが壊れるのを防ぐことができます。詳細については、isset のドキュメントを参照してください。

于 2013-05-20T17:49:12.300 に答える
0

に設定できerror_reportingますE_ALL ~E_NOTICE

これに関するドキュメントを参照してください: http://php.net/manual/en/function.error-reporting.php

または、php.ini ファイルでグローバルに無効にします。

于 2013-05-20T17:43:27.723 に答える
0

POSTこれは、値を(フォームの投稿などから)受け取っていないためです。isset()他の人が示唆しているように、検証を追加します。http://php.net/manual/es/function.isset.phpをご覧ください。

于 2013-05-20T17:43:58.190 に答える
0
<?php

if(isset($_POST['username'])){
   ..
   ..
}

?>
于 2013-05-20T17:44:18.560 に答える
0

使用するisset($_POST['username'])

if(isset($_POST['username']))
{
.
.
.
}
于 2013-05-20T17:44:33.680 に答える