$ _REQUEST ["input_name"]をチェックするときに、フォーム処理中に配列が必要かどうかを理解しようとしています。値が渡されない場合、それについては泣きません。また、アクセスしようとしてもphpはエラーをスローしません。存在しない配列項目....if($ _ REQUEST ["input_name"])..を使用できます。if()を使用できる場合でも「空」はどうですか。
THnks
$_REQUEST
フォームをテストしている場合を除き、フォーム入力をキャプチャするためにスーパーグローバルを使用することはお勧めしません。本当に正当な理由がない限り、代わりに$_GET
orを使用してください。$_POST
また、配列のコンテキストではより明確ですがisset()
、array_key_exists()
両方とも配列キーに関して同じトリックを行います。array_key_exists()
以下を使用することをお勧めします。
error_reporting(E_ALL); //E_ALL - All errors and warnings
開発環境内で、より良いプラクティスが適用される可能性がある場所、使用前の変数の宣言の失敗などを明らかにすることができます。
エラーレベルにはさまざまな種類があります。設定されていない変数をチェックすると、通知がスローされるだけです。エラー報告はおそらくそれらを無視するように設定されています。isset
変数には問題がありますが、変数が設定されているかどうかを確認する場合は、常に使用することをお勧めします。
上記のことだけを行うと、たとえば、$_REQUEST["input_name"]
文字列が「0」の場合、false と評価されます。また、最初から $_REQUEST を使用することはお勧めできません。これは、Cookie などの影響を受ける可能性があり、通常、悪いアーキテクチャのコードのにおいがするからです。
$_REQUEST を使用するのはかなりハックです。$_POST または $_GET (何をしているかによる) を使用し、isset() を使用する必要があります。
私がこれまで読んだ PHP に関するすべての本には、そう書かれているようです。
通常、少なくともテストのために、php.ini または error_reporting(E_ALL) を使用するコードで、エラー レポートを E_ALL (すべてのエラーと警告) に設定します。( E_STRICTも追加することを検討してください。) 微妙な問題が発生して後で気付くよりも、前もってエラーについて明白な通知を得たほうがよいでしょう。
あいまいすぎる $_REQUEST の使用を避け (GET、POST、および Cookie の値が含まれます)、それらが本当に意味するものである場合は $_POST または $_GET を使用し、確認してください。isset($_POST["input_name"])
短い答えは「はい」です。:)
if($_REQUEST["input_name"])
「input_name」が存在しない場合は通知 (エラー) がスローされるため、isset() を使用することをお勧めします。