Récupérer les valeurs envoyé depuis une requete HTTP en PHP
avion-f16 Messages postés 19255 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour, je réalise le BACKEND de mon application en PHP et ANGULAR pour la partie Front etc .
Depuis mon FRONTEND j'effectue une requête POST mais le souci c'est que je n'arrive pas à récupérer mes données.
Requête :
service.ts
Code permettant d'afficher les données :
add_api_account.php
Je reçois bien mais donnée au format JSON :
add_api_account.php
Mais quand j'essaye d'affiche mes données il n'y a pas de variable $_POST :
add_api_account.php
Merci pour le temps accordé ;)
- Récupérer les valeurs envoyé depuis une requete HTTP en PHP
- Http - Guide
- Comment récupérer les messages supprimés sur whatsapp - Guide
- Comment recuperer une video sur youtube - Guide
- Http //192.168.l.l - Guide
- Message non envoyé - Forum Mobile
5 réponses
bonjour,
quand tu écris "Je reçois bien mais donnée au format JSON", qui est "je"?
Quelles sont les données que tu envoies au moment de faire le POST?
Merci de poster le texte de ton code au lieu d'images, comme expliqué ici: https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code
Merci de poster le texte de ton code au lieu d'images, comme expliqué ici: https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code
Bonjour
Le problème semble venir du code d'envoi et non le code php qui réceptionne les données..
À noter, que ton gison est incomplet.
Il faut indiquer le nom de la variable et sa valeur et pas juste envoyer des valeurs...
link:link , autrevar:autrevaleur ..
Comme je te l'ai dit, le souci vient de l'envoi de tes données...
Au lieu de mettre
{titleAPi, linkApi, tokenAPi }
il faut utiliser le format :
{nomdelavariable: valeur, autrevariable: autrevaleur, etc... }
Donc, d'après le code que tu montres :
{titleAPi:titleAPi, linkApi:linkApi, tokenAPi:tokenAPi }
Poste nous l'intégralité du code PHP
Vérifie, avant, que tes fichiers sont bien encodé en utf8 ( voir chapitre 1 de ce lien : https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8 )
service.ts :
/* Requete permettant d'ajouter un is */ addGitlabAccount(data: any): Observable<any> { const titleApi : string = data[0]; const linkApi : string = data[1]; const tokenApi : string = data[2]; let link = "http://localhost/developpement/gitlab/gitlab/php/script/gitlab-api/add_api_account.php"; return this.http.post<any>(link, {'linkApi': linkApi, 'titleApi': titleApi, 'tokenApi': tokenApi}, {responseType: 'json'}); }
add_api_account.php
/* Header du script */ header( 'content-type: application/json; charset=utf-8' ); header("Access-Control-Allow-Headers: *"); header("Access-Control-Allow-Origin: *"); $data = json_encode($_POST); var_dump($_POST);
J'ai essayé cela et c’a fonctionne.
$datas = json_decode(file_get_contents('php://input')); $api_info = array('linkApi' => null, 'titleApi' => null, 'tokenApi' => null); foreach ($datas as $index => $data): $api_info[$index] = $data; endforeach; $api_title_post = $api_info['titleApi']; $api_link_post = $api_info['linkApi']; $api_token_post = $api_info['tokenApi'];
J'ai pas réussit à récupérer les informations directement via 'php://input' donc j'ai fait le foreach ( je pense pas que c’a soit la manière la plus prope )
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionBonjour,
Dans le cas habituel d'une requête POST :
POST /path/to/request HTTP/1.1 Host: example.com Content-TType: appplication/x-www-form-urlencoded field1=value1&field2=value2
(les fautes en ligne 3 sont volontaires, sinon CCM n'accepte pas...)
Les variables $_POST['field1'] et $_POST['field2'] sont alors définies.
Dans ton cas, le contenu soumis par la requête POST est de type application/json, il n'y a donc pas de mappage entre les clés JSON et la variable $_POST.
Tu peux lire le contenu de la requête POST (le JSON complet) via le chemin spécial php://input.
Voir https://www.php.net/manual/en/reserved.variables.post.php
J'ai du modifier à plusieurs reprises afin de trouver pourquoi CCM n'acceptait pas ma réponse, je pensais que c'était le lien (risque de spam?) mais au final, c'est la partie "Content-Type" qui passe pas.
Tu peux obtenir le json via $json = file_get_contents('php://input');
Là c'est juste une chaine de caractères, après il faut le "parser" avec json_decode
D'ailleurs pourquoi CCM met "avec json_decode" en rouge, j'en sais rien, il n'est pas top leur éditeur "wysiwig" :/
Dans la 3eme images dans l'onglet requête mais 3 données s'affiche en gros.
Ya de forte chance que je raconte des betises.