私は人々(一般に良いコードを書く人)$_POST
がこのようなコードで配列を直接変更するのを見ました:
// Add some value that wasn't actually posted
$_POST['last_activity'] = time();
// Alter an existing post value
$_POST['name'] = trim($_POST['name']);
// Our pretend function
// Pass the entire $_POST array as data to work with in the function
// The function update_record() will read only the values we actually need
update_record($_POST);
// ...That sure was easier than creating a new array
// with only the $_POST values we actually need.
update_record()
$ _POSTに直接アクセスしてはいけないのは理にかなっているので、たとえば他のデータ配列をそれに渡すことができますが、これは怠zyで、デザインが悪いか、間違っているだけでしょうか?しかし、まだ有効な配列をに渡しているupdate_record()
ので、なぜ新しい配列を作成するのですか?
これは問題のポイントではなく、単なる使用例です。しかし、多くの人がこれを$_REQUEST
データで行うべきではないと言うのを聞いたことがありますが、それは悪い習慣です。しかし、なぜ?無害に見えます。
例:
$_GET
実際には存在しないデフォルト(または投稿)値を設定する$_POST
フォーム送信後に実際に投稿されなかった値を追加するスクリプトの非常に早い段階で
$_GET
配列の値またはキーを直接サニタイズまたはフィルタリングします(フォールバックサニテーション...どうして?)$_POST
フォーム送信の前に手動で値を設定して、入力にデフォルト値を入力します(入力がデフォルト値を読み取るとき$_POST
。これを実行しました)独自の
$_SERVER
価値を構成しますか?確かに、どうして?どのように他の人について、同様
$_COOKIE
と$_SESSION
?もちろん、それらを直接修正する必要がありますか?それでは、なぜ他の人はいませんか?
スーパーグローバルの 直接的な変更は決して行われるべきではありませんか、それとも一部のインスタンスで実行しても大丈夫ですか?