IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Utilisation de cURL avec la méthode POST


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2014
    Messages : 6
    Points : 8
    Points
    8
    Par défaut Utilisation de cURL avec la méthode POST
    Bonjour,

    J'ai utilisé cURL avec la méthode GET pour envoyer un fichier de configuration sous forme de fichier XML vers ma gateway de VoIP avec le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?php
    // Url cible
    $url="http://192.168.15.1/admin/resync?http//192.168.15.200/config.xml&xuser=admin&xpassword=admin";
    // Le tableau associatif contenant les variables envoyées par POST au serveur
    $options=array(
          CURLOPT_URL            => $url, // Url cible
          CURLOPT_RETURNTRANSFER => true, // Retourner le contenu téléchargé dans une chaine
          CURLOPT_HEADER         => false, // Ne pas inclure l'entête de réponse du serveur dans la chaine retournée
          CURLOPT_FAILONERROR    => true // Gestion des codes d'erreur HTTP supérieurs ou égaux à 400
    );
    // Création d'un nouvelle ressource cURL
    $CURL=curl_init();
    // Erreur suffisante pour justifier un die()
    if(empty($CURL)){die("ERREUR curl_init : Il semble que cURL ne soit pas disponible.")}
          // Configuration des options de téléchargement
          curl_setopt_array($CURL,$options);
          // Exécution de la requête
          $content=curl_exec($CURL); // Le contenu téléchargé est enregistré dans la variable $content
          // Si il s'est produit une erreur lors du téléchargement
          if(curl_errno($CURL)){
                // Le message d'erreur correspondant est affiché
                echo "ERREUR curl_exec : ".curl_error($CURL);
          }
    // Fermeture de la session cURL
    curl_close($CURL);
    ?>
    192.168.15.1 -> @ip de la gateway
    192.168.15.200 -> @ip de mon serveur web

    Le script fonctionne bien, mais je voudrai utiliser cURL avec la méthode POST en ajoutant les deux options "CURLOPT_POST" et "CURLOPT_POSTFIELDS " avec le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <?php
    // Url cible
    $url="http://192.168.15.1/admin/resync?http//192.168.15.200/config.xml";
    // Complétez le tableau associatif $postFields avec les variables qui seront envoyées par POST au serveur
    $postFields=array(
          "xuser"     => "admin",  // La variable xuser contenant la valeur admin
          "xpassword" => "admin"  // La variable xpassword contenant la valeur admin
    );
    // Le tableau associatif contenant les variables envoyées par POST au serveur
    $options=array(
          CURLOPT_URL            => $url, // Url cible
          CURLOPT_RETURNTRANSFER => true, // Retourner le contenu téléchargé dans une chaine
          CURLOPT_HEADER         => false, // Ne pas inclure l'entête de réponse du serveur dans la chaine retournée
          CURLOPT_FAILONERROR    => true, // Gestion des codes d'erreur HTTP supérieurs ou égaux à 400
          CURLOPT_POST           => true, // Effectuer une requête de type POST
          CURLOPT_POSTFIELDS     => $postFields // Le tableau associatif contenant les variables envoyées par POST au serveur
    );
    // Création d'un nouvelle ressource cURL
    $CURL=curl_init();
    // Erreur suffisante pour justifier un die()
    if(empty($CURL)){die("ERREUR curl_init : Il semble que cURL ne soit pas disponible.")}
          // Configuration des options de téléchargement
          curl_setopt_array($CURL,$options);
          // Exécution de la requête
          $content=curl_exec($CURL); // Le contenu téléchargé est enregistré dans la variable $content
          // Si il s'est produit une erreur lors du téléchargement
          if(curl_errno($CURL)){
                // Le message d'erreur correspondant est affiché
                echo "ERREUR curl_exec : ".curl_error($CURL);
          }
    // Fermeture de la session cURL
    curl_close($CURL);
    ?>
    Mais cela ne marche pas.

    Merci.

  2. #2
    Membre confirmé
    Avatar de Skyxia
    Homme Profil pro
    Ingénieur réseau & sécurité
    Inscrit en
    Mai 2016
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur réseau & sécurité
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2016
    Messages : 359
    Points : 627
    Points
    627
    Billets dans le blog
    3
    Par défaut
    Je ne m'y connais quasiment pas mais je vois plus un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    // Url cible
    $url="http://192.168.15.1/admin/resync?http//192.168.15.200/config.xml";
    $fields = array(
          'xuser' => "admin",
          'xpassword' => "admin" 
    );
    ou même (si c'est possible) :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    // Url cible
    $url="http://192.168.15.1/admin/resync?http//192.168.15.200/config.xml";
    $fields = array(
          'xuser' => urldecode($variable), 
          'xpassword' => urldecode($variable)
    );
    et :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_FAILONERROR, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
    après, reste à modifier le reste du code, mais je rappel que je ne suis absolument pas sur, c'est juste que j'ai du en utiliser un dans le même style et voilà à peu près comment le miens est tourné. J'espère que ça pourra te donner des idées ou à d'autres :s

    Siberattaque : Attaque informatique par un hackeur sibérien.


    Je vous invite à consulter mes billets dans mon blog :
    Cisco IOS & Sécurité basique
    Audit réseaux dans un SI

    [Smartphone] [Android] 8 conseils pour vous sécuriser un minimum !

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Il faudrait que tu dises quel message d'erreur tu as (si tu en as).

    Sinon, il y a une source d'erreur fréquente: à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CURLOPT_POSTFIELDS     => $postFields
    Fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CURLOPT_POSTFIELDS     => http_build_query($postFields)

Discussions similaires

  1. Réponses: 0
    Dernier message: 26/02/2009, 19h36
  2. [MySQL] Problème avec la méthode POST lors de la connexion à la BD
    Par Sayrus dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 23/04/2007, 08h37
  3. Problème d'utilisation d'Axis avec des WSDL
    Par Tino13 dans le forum Services Web
    Réponses: 2
    Dernier message: 31/03/2007, 10h09
  4. Réponses: 3
    Dernier message: 22/02/2007, 20h02
  5. Problème d'utilisation de Mysql avec dev-c++
    Par Watchi dans le forum Dev-C++
    Réponses: 10
    Dernier message: 06/08/2004, 14h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo