Récupérer les valeurs envoyé depuis une requete HTTP en PHP
avion-f16 Messages postés 20367 Statut Contributeur -
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
- Http //easywifi.config - Forum WiFi
5 réponses
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.