簡単な質問:すべてのフィールドを知らなくても、すべてのデータをページにPOSTすることは可能ですか?
たとえば、POSTされたデータを収集して電子メールで送信する簡単なスクリプトを作成します。フォームのフィールドは時間の経過とともに大きく変化する可能性が高いと予測できるため、長い目で見れば時間を節約するために、すべてを自動的に収集するものを作成できるかどうか疑問に思いましたか?
出来ますか?
承知しました。 $_POST
配列:
foreach ($_POST as $key => $value) {
echo "Field ".htmlspecialchars($key)." is ".htmlspecialchars($value)."<br>";
}
誰も言及していませんRaw Post Data、しかし、投稿されたデータにキーがなく値のみがある場合、 Raw Post Data :
$postdata = file_get_contents("php://input");
PHP Man:
php:// inputは、リクエスト本文から生データを読み取ることができる読み取り専用ストリームです。 POSTリクエストの場合、特別なphp.iniディレクティブに依存しないため、$ HTTP_RAW_POST_DATAの代わりにphp:// inputを使用することをお勧めします。さらに、$ HTTP_RAW_POST_DATAの場合デフォルトでは設定されていませんが、always_populate_raw_post_dataをアクティブ化するよりもメモリ消費量が少ない可能性があります。php:// inputはenctype = "multipart/form-data"では使用できません。
投稿されたすべてのデータは、$ _ POSTスーパーグローバルにあります。
array_keys() を使用して$ _POST配列のすべてのキーを取得し、それらのキーの値で電子メールメッセージを作成できます。
var_dump($ _ POST) は、$ _ POST内のすべての情報に関する情報もダンプします。
特別なフォーマットが必要ない限り:はい。
foreach ($_POST as $key => $value)
$body .= $key . ' -> ' . $value . '<br>';
明らかに、より多くのフォーマットが必要になりますが、それは「簡単な」方法です。質問を誤解しない限り。
次のようなこともできます(そして、この形式が好きなら、確かに簡単です):
$body = print_r($_POST, true);
他に追加するには、 var_export も便利です。
$email_text = var_export($_POST, true);
$_REQUEST
と$_POST
を使用して、Post、Get、Cookieデータなどのすべてにアクセスできます。