web-dev-qa-db-fra.com

PHP: Possible d'obtenir automatiquement toutes les données POSTed?

Question simple: est-il possible d’obtenir toutes les données POSTÉES sur une page, même si vous ne connaissez pas tous les champs?

Par exemple, je veux écrire un script simple qui collecte toutes les données POSTed et les envoie par courrier électronique. Je peux prévoir que les champs du formulaire sont susceptibles de beaucoup changer au fil du temps, alors pour gagner du temps à long terme, je me demandais si je pouvais écrire quelque chose qui rassemblerait automatiquement tout?

C'est possible?

47
Chuck Le Butt

Sûr. Il suffit de marcher à travers le $_POST tableau:

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

Personne n'a mentionné Données de publication brutes , mais il est bon de savoir que, si les données publiées n'ont pas de clé, mais uniquement une valeur, utilisez Données de publication brutes :

$postdata = file_get_contents("php://input");

PHP Man:

php: // input est un flux en lecture seule qui vous permet de lire des données brutes depuis le corps de la requête. Dans le cas de POST requêtes, il est préférable d'utiliser php: // input au lieu de $ HTTP_RAW_POST_DATA car cela ne dépend pas de directives php.ini spéciales. De plus, dans les cas où $ HTTP_RAW_POST_DATA n’est pas renseigné par défaut, c’est une alternative potentiellement moins gourmande en mémoire que l’activation de always_populate_raw_post_data. L’entrée php: // n’est pas disponible avec enctype = "multipart/form-data".

33
Roman Newaza

Oui, vous pouvez utiliser simplement

     $input_data = $_POST;

ou extract () peut vous être utile.

6
diEcho

Toutes les données postées seront dans le superglobal $ _POST.

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

4
George Cummins

Vous pouvez récupérer toutes les clés du tableau $ _POST en utilisant array_keys () , puis construire un courrier électronique avec les valeurs de ces clés.

var_dump ($ _POST) dumpera également les informations sur toutes les informations de $ _POST pour vous.

2
barfoon

Tant que vous ne voulez pas de formatage spécial: oui.

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

Évidemment, plus de formatage serait nécessaire, mais c’est le moyen "facile". Sauf si j'ai mal compris la question.

Vous pouvez aussi faire quelque chose comme ça (et si vous aimez le format, c'est certainement plus facile):

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

Pour ajouter aux autres, var_export pourrait aussi être utile:

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

Vous pouvez utiliser $_REQUEST aussi bien que $_POST pour accéder à tout, comme les données de publication, d’obtention et de cookie.

0
Tarik