[RESOLU] Problème pour récupérer des données avec une requête post

Eléphant du PHP | 262 Messages

29 août 2017, 10:23

Bonjour à tous,

Pourriez vous m'aider?

J'arrive à récupérer des données en x-www-form-urlencoded mais pas en form-data, j'envoi un json et une variable. Si je fais un dump de $_POST j'ai :

Code : Tout sélectionner

SyncTwoController.php on line 289: array:1 [ "------WebKitFormBoundarycAbpiuoDVD1fTOeZ\r\nContent-Disposition:_form-data;_name" => """ "access_token"\r\n \r\n dhfiejirjfroforf,\r\n ------WebKitFormBoundarycAbpiuoDVD1fTOeZ\r\n Content-Disposition: form-data; name="json"\r\n \r\n "{'test': 'test'}" ]
Le problème c'est que je suis sur un projet ou on me l'envoi sous cette form, un POST['json'] ne fonctionne pas.

Merci de votre aide.

Eléphanteau du PHP | 39 Messages

29 août 2017, 15:57

Hello. Une recherche sur "SyncTwoController.php" semble me diriger vers le framework lavarel, est-ce le cas ? Car je connais pas du tout. Sinon, est-il possible de voir le résultat de var_dump($_POST) car les données affichées ne viennent certainement pas d'un var_dump(). Si en fait c'est du raw-post ajax et que tu ne sais pas comment récupérer en php, de mémoire c'est $raw_post = file_get_contents('php://input'); et lire la suite ici

EDIT: à la relecture du message je me demande aussi si c'est un simple upload de fichier et donc var_dump($_FILES);

Eléphant du PHP | 262 Messages

29 août 2017, 16:47

Merci de ta réponse tesmet,

Avec

Code : Tout sélectionner

var_dump(file_get_contents('php://input'));
je ne récupère pas la même chose qu'avec

Code : Tout sélectionner

var_dump($_POST)
, n'y a t-il pas un moyen de faire un peux comme un

Code : Tout sélectionner

$_POST['json']
par exemple. le problème j'ai ici deux données le token et le json un file_get_content va me les mélanger non ?

La requête est envoyé en form_data et pas en x_www_formurlencode ou raw.

Eléphanteau du PHP | 39 Messages

29 août 2017, 17:57

Il faut montrer les données retournées et non pas les lignes de code. Je n'ai même aucune idée du nom du champs qui contient les 2 informations à extraire, donc que retourne le bout code suivant sans oublier la modification requise sur le nom du champs

Code : Tout sélectionner

<pre><?php var_dump($_POST, $_FILES); // il faut remplacer 'machin' par le nom vrai de ce champs // pour extraire les 2 données dans ce champs ? if(preg_match_all('#"(access_token|json)"\R+(.*)#', $_POST['machin'], $match)) { $match = array_combine($match[1], $match[2]); } var_dump($match, json_decode($match['json'])); ?></pre>

Eléphant du PHP | 262 Messages

30 août 2017, 14:41

Super ça fonctionne merci.