Récupérer les valeurs envoyé depuis une requete HTTP en PHP

Lounaa -  
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é ;)

A voir également:

5 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 

bonjour,

quand tu écris "Je reçois bien mais donnée au format JSON", qui est "je"?

0
Lounaa
 

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.

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 

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

0
Lounaa
 

Bonjour, j'envoie 3 chaines de caractères :
 

linkApi, titleApi et tokenApi

0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Lounaa
 

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

0
Lounaa > Lounaa
 
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'});
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Lounaa
 

Et donc, maintenant, ça ne fonctionne toujours pas ?

Qu'as-tu dans ta console lorsque tu envoies une requête ?  (Dans l'onglet requête, et dans l'onglet réponse)

0
Lounaa > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 

Rien n'a changé si je me trompe pas.

Onglet Requête:

Onglet Reponse:

add_api_account.php

$data = json_decode($_POST);
var_dump($_POST);
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 

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 ..

0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 

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 }
0
Lounaa > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 

Bonjour, j'ai modifier le code qui envoi les données dans le format que vous avez demander mais les données ne s'affiche pas quand je fais var_dump($_POST).

 Le résultat de la requête dans la console:

0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Lounaa
 

il faudrait nous montrer ce qui s'affiche dans l'onglet "reponse"

0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 

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   )


0
Lounaa
 

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);
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Lounaa
 

Tu peux essayer

$data = json_decode(file_get_contents('php://input'), true);
var_dump($data );
0
Lounaa > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 

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 )

0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Lounaa
 

Tu n'as pas regardé ce que je t'ai donné visiblement

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
avion-f16 Messages postés 19255 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 

Bonjour,

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

0
Lounaa
 

Bonjour, qu'est ce que tu veut dire par le chemin spécial ?

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Lounaa
 

Chemin spécial: as-tu lu les explications données via le lien?

0
Lounaa > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 

Oui il n'avais pas partagé de lien dans un premier temps ( il a modifier le message ;) )
Merci.

0
avion-f16 Messages postés 19255 Date d'inscription   Statut Contributeur Dernière intervention   4 507 > Lounaa
 

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" :/

0