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

Fermé
Lounaa - 31 oct. 2022 à 11:45
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 - 2 nov. 2022 à 13:55

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 23364 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 3 décembre 2024 Ambassadeur 1 556
31 oct. 2022 à 13:26

bonjour,

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

0

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 23364 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 3 décembre 2024 Ambassadeur 1 556
31 oct. 2022 à 13:40

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

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

linkApi, titleApi et tokenApi

0
jordane45 Messages postés 38326 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 décembre 2024 4 712 > Lounaa
2 nov. 2022 à 09:42

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
2 nov. 2022 à 09:43
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 38326 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 décembre 2024 4 712 > Lounaa
2 nov. 2022 à 09:54

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 38326 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 décembre 2024
Modifié le 2 nov. 2022 à 10:07

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 38326 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 décembre 2024 4 712
31 oct. 2022 à 13:43

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 38326 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 décembre 2024 4 712
31 oct. 2022 à 19:56

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 38326 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 décembre 2024
2 nov. 2022 à 09:33

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 38326 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 décembre 2024 4 712 > Lounaa
2 nov. 2022 à 09:57

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

0
jordane45 Messages postés 38326 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 décembre 2024 4 712
2 nov. 2022 à 10:08

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

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 38326 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 décembre 2024 4 712 > Lounaa
2 nov. 2022 à 10:50

Tu peux essayer

$data = json_decode(file_get_contents('php://input'), true);
var_dump($data );
0
Lounaa > jordane45 Messages postés 38326 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 décembre 2024
Modifié le 2 nov. 2022 à 10:55

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 38326 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 décembre 2024 4 712 > Lounaa
2 nov. 2022 à 11:17

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 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505
Modifié le 2 nov. 2022 à 10:19

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

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

0
yg_be Messages postés 23364 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 3 décembre 2024 1 556 > Lounaa
2 nov. 2022 à 10:27

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

0
Lounaa > yg_be Messages postés 23364 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 3 décembre 2024
2 nov. 2022 à 10:29

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

0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505 > Lounaa
Modifié le 2 nov. 2022 à 13:56

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