$a
代わりに$_GET['a']
(またはあまりにも)使用することを参照しているの$_POST['a']
は、として知られている古い機能ですregister_globals
。この機能は危険でコードが乱雑になるため、PHP 5.3 で非推奨と見なされ、最終的に PHP 5.4 で削除されました。
次に、$_GET['a']
スクリプトのあらゆる場所で使用すると、問題が発生する可能性があります。これは、ユーザー入力 ( 、、、およびまたはからのすべてのもの)を決して信頼してはならないためです。次のようなことを行うことをお勧めします(関数は存在しません。期待する値のタイプに応じて、必要に応じて、取得するものが整数、または有効な日付などであることを確認する必要があります)。これからは、参照をやめて、作成したばかりの新しいサニタイズされた変数を代わりに使用する必要があります。always を使用していた場合、どこかでサニタイズするのを忘れる可能性があるためです。$_GET
$_POST
$_REQUEST
$_COOKIE
$_FILES
$_SERVER
$a = sanitize($_GET['a']);
sanitize
$_GET['a']
$a
$_GET['a']
また、このサニタイズされた変数を SQL クエリに送信する前に、エスケープするか、SQL インジェクションを回避するために準備済みステートメント内で使用する必要があります。ユーザーに表示するために html に出力する前に、XSS 攻撃htmlspecialchars
を回避するために使用します。
そして最後に、複数の php ブロックと html ブロックを混在させることについては、長期的には完全に混乱するため、これはメンテナンス上の理由からのみ悪いことです。ユーザーに送信する html を php コードから分離してみてください。MVC パターン (Model-View-Controller)について何かを読んでみてください(このリンクはおそらく複雑すぎるか、php を始めたばかりのあなたには今のところユーティリティが表示されていない可能性があります (少なくとも私はその方法を知りませんでした)。必要なすべての複雑さのために、html と php を混合するよりもはるかに優れていました) が、その背後にあるアイデアを把握するようにしてください)。