web-dev-qa-db-ja.com

PHP:すべてのPOSTデータを自動的に取得できますか?

簡単な質問:すべてのフィールドを知らなくても、すべてのデータをページにPOSTすることは可能ですか?

たとえば、POSTされたデータを収集して電子メールで送信する簡単なスクリプトを作成します。フォームのフィールドは時間の経過とともに大きく変化する可能性が高いと予測できるため、長い目で見れば時間を節約するために、すべてを自動的に収集するものを作成できるかどうか疑問に思いましたか?

出来ますか?

47
Chuck Le Butt

承知しました。 $_POST配列:

foreach ($_POST as $key => $value) {
    echo "Field ".htmlspecialchars($key)." is ".htmlspecialchars($value)."<br>";
}
87
Pekka 웃

誰も言及していません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"では使用できません。

33
Roman Newaza

はい、簡単に使用できます

     $input_data = $_POST;

または extract() が役立つ場合があります。

6
diEcho

投稿されたすべてのデータは、$ _ POSTスーパーグローバルにあります。

http://php.net/manual/reserved.variables.post.php

4
George Cummins

array_keys() を使用して$ _POST配列のすべてのキーを取得し、それらのキーの値で電子メールメッセージを作成できます。

var_dump($ _ POST) は、$ _ POST内のすべての情報に関する情報もダンプします。

2
barfoon

特別なフォーマットが必要ない限り:はい。

foreach ($_POST as $key => $value) 
    $body .= $key . ' -> ' . $value . '<br>';

明らかに、より多くのフォーマットが必要になりますが、それは「簡単な」方法です。質問を誤解しない限り。

次のようなこともできます(そして、この形式が好きなら、確かに簡単です):

$body = print_r($_POST, true);
2
Tickthokk

他に追加するには、 var_export も便利です。

$email_text = var_export($_POST, true);
1
searlea

$_REQUEST$_POSTを使用して、Post、Get、Cookieデータなどのすべてにアクセスできます。

0
Tarik