私はいくつかのphpチュートリアルを見ていますが、それらの多くは次のようなものから始まります:
<?php
if(!$_POST['username']){
..
..
};
?>
また
<?php
$username = $_POST['username'];
..
..
?>
しかし、初めてページにアクセスするたびに、 $_POST['username'] が初期化されていないため、エラーが出力されます。どうすればこれを修正できますか?
ありがとう
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 のドキュメントを参照してください。
に設定できerror_reportingますE_ALL ~E_NOTICE
これに関するドキュメントを参照してください: http://php.net/manual/en/function.error-reporting.php
または、php.ini ファイルでグローバルに無効にします。
POSTこれは、値を(フォームの投稿などから)受け取っていないためです。isset()他の人が示唆しているように、検証を追加します。http://php.net/manual/es/function.isset.phpをご覧ください。
<?php
if(isset($_POST['username'])){
..
..
}
?>
使用するisset($_POST['username'])
if(isset($_POST['username']))
{
.
.
.
}