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

Lounaa -  
avion-f16 Messages postés 19182 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é ;)

5 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     

    bonjour,

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

    0
    1. 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
  2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     

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

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

      linkApi, titleApi et tokenApi

      0
      1. 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
      2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > 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
      3. Lounaa > jordane45 Messages postés 30427 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
  3. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     

    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
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       

      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
      1. Lounaa > jordane45 Messages postés 30427 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
      2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > Lounaa
         

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

        0
  4. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     

    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
    1. 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
      1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > Lounaa
         

        Tu peux essayer

        $data = json_decode(file_get_contents('php://input'), true);
        var_dump($data );
        0
      2. Lounaa > jordane45 Messages postés 30427 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
      3. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > Lounaa
         

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

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

    Posez votre question
  6. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     

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

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

      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Lounaa
         

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

        0
      2. Lounaa > yg_be Messages postés 23437 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
      3. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511 > 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