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 :

CURL fonctionne en GET mais pas en POST [Fait]


Sujet :

Langage PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Points : 316
    Points
    316
    Par défaut CURL fonctionne en GET mais pas en POST
    Bonjour à tous,

    Je cherche à interroger une page d'un site à partir d'un autre site (je précise que je m'occupe des 2 sites )

    l'hebergeur interdit l'utilisation de file_get_content() aussi je me suis tourné vers la bibliothèque CURL pour récuperer les variables.

    tout fonctionne bien tant que j'utilise Curl en passant mes variables en GET :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    $mon_url='http://www.monSite/retourPlanning.php?dateDu=2009-01-01&dateAu=2009-01-31';
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $mon_url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $recup_html = curl_exec ($ch);
     
     
    echo $recup_html;
    par contre j'ai une erreur dès que j'essaye ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    $mon_url='http://www.monSite/retourPlanning.php';
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $mon_url);
    	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    	curl_setopt($ch, CURLOPT_POST, 1);
    	curl_setopt($ch, CURLOPT_POSTFIELDS, 'dateDu=2009-01-01&dateAu=2009-01-31' );
        $recup_html = curl_exec ($ch);
     
     
    echo $recup_html;
    voici l'erreur :

    Access forbidden!

    You don't have permission to access the requested object. It is either read-protected or not readable by the server.

    If you think this is a server error, please contact the webmaster.
    Error 403


    le serveur peut-il être configuré pour générer ce genre d'erreur, ou s'agit-il d'une erreur de syntaxe de ma part ?

    je précise aussi que du coté de la page sensée renvoyer la réponse j'ai simplifié au maximum pour faire des tests puisque son seul code est :

    Merci d'avance pour vos réponses

  2. #2
    FoxLeRenard
    Invité(e)
    Par défaut
    La fonction curl_init n' a pas vocation de Haker un site depuis un autre
    heureusement

    Même si tu est gérent des deux sites ...

    Houp's ... j' ais oublié de te demander comment tu avais installé ton module
    as tu toutes les DLL sur ton micro ?
    Dernière modification par ThomasR ; 14/01/2009 à 13h04. Motif: Il est possible d'éditer ses propres messages.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Points : 316
    Points
    316
    Par défaut
    Salut FoxLeRenard,

    je comprends pas ce que tu entends par "hacker"

    Quelle est la vocation de Curl si ce n'est d'établir un dialogue avec une page située sur un autre domaine ?

    voir cet exemple sur la doc PHP :

    http://fr2.php.net/manual/fr/curl.examples.php

    d'autre part, la librairie curl est installée par mon hebergeur sur ses serveurs et l'interrogation de PHP info m'indique : Curl : enabled

    à quelles DLL fais-tu allusion ?

    en quoi mon PC est-il concerné par l'utilisation d'une librairie PHP ?

    Et enfin pourquoi cela fonctionnerait en GET et pas en POST s'il s'agit d'une protection "anti-hacking"

  4. #4
    FoxLeRenard
    Invité(e)
    Par défaut
    Arhhh tu as raison je te croyais en test sur ton micro, auquel cas il faut installer des DLL's dans system de windows (system32) ...

    Pour le reste oui je crois que cette fonction trés officielle est une porte ouverte, si on peut l'éviter c' est mieux.

    Enfin pour ta question principale,

    P
    ourquoi cela fonctionnerait en GET et pas en POST s'il s'agit d'une protection "anti-hacking"
    Je crois qu'il sagit d' une non communication par le buffer utilisé par POST,
    mais ça je ne peux l'afirmer car je ne sais pas

    C 'est curieux, car j'appelles réguliérement depuis des html de mon micro,
    des PHP de mes sites en passant des POST ...

    Mystére je retourne lire la doc sur
    http://fr2.php.net/manual/fr/curl.installation.php

    Bon courage
    Dernière modification par Bisûnûrs ; 15/01/2009 à 16h14.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Points : 316
    Points
    316
    Par défaut
    Salut FoxLeRenard,

    Merci de ta réponse.

    Bon, pour le moment rien ne m'empêche de developper mon système en passant mes variables en GET puisque ça fonctionne comme ça.

    C'est vrai que je n'aime pas trop cela car j'ai l'impression que cela rend mes pages plus vulnérables (au hacking justement).

    Mais je crois que ce n'est qu'une illusion dans la mesure ou l'on peut aussi bien intercepter des variables en POST.

    Quoi qu'il en soit les variables GET passées avec Curl ne sont jamais affichées nul part (sauf peut-être en cas d'erreur sur la page )

    Je ferai des tests de vulnérabilité quand le système fonctionnera comme ça.

    Pour le reste oui je crois que cette fonction trés officielle est une porte ouverte, si on peut l'éviter c' est mieux.
    Je ne vois pas comment éviter cette fonction dans la mesure ou je centralise des données dans une BDD pour les rendre accessible à tous mes clients par le biais d'un petit module installé sur leur site.

    Il faut bien qu'à un moment une page de mon site puisse receptionner une question et renvoyer en retour les données correspondantes.

    Vois-tu une meilleure façon de procéder pour arriver à ce résultat ?

    Bonne journée

  6. #6
    FoxLeRenard
    Invité(e)
    Par défaut
    Je ne vois pas comment éviter cette fonction dans la mesure ou je centralise des données dans une BDD pour les rendre accessible à tous mes clients par le biais d'un petit module installé sur leur site.

    Il faut bien qu'à un moment une page de mon site puisse receptionner une question et renvoyer en retour les données correspondantes.

    Vois-tu une meilleure façon de procéder pour arriver à ce résultat ?
    Mais justement, ils peuvent avoir une communication par un
    FORM situé chez eux dans un PHP ou HTML de leur micro ou site web
    et reçu par un PHP de chez toi, ce PHP leur renverrait leur réponse , il faudrai que je te montre un exemple concret !!

    Je veux bien te monter un exemple, mais pas avant lundi !!

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut
    Citation Envoyé par Alexdezark Voir le message
    Bonjour à tous,

    Je cherche à interroger une page d'un site à partir d'un autre site (je précise que je m'occupe des 2 sites )

    l'hebergeur interdit l'utilisation de file_get_content() aussi je me suis tourné vers la bibliothèque CURL pour récuperer les variables.

    tout fonctionne bien tant que j'utilise Curl en passant mes variables en GET :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    $mon_url='http://www.monSite/retourPlanning.php?dateDu=2009-01-01&dateAu=2009-01-31';
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $mon_url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $recup_html = curl_exec ($ch);
     
     
    echo $recup_html;
    par contre j'ai une erreur dès que j'essaye ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    $mon_url='http://www.monSite/retourPlanning.php';
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $mon_url);
    	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    	curl_setopt($ch, CURLOPT_POST, 1);
    	curl_setopt($ch, CURLOPT_POSTFIELDS, 'dateDu=2009-01-01&dateAu=2009-01-31' );
        $recup_html = curl_exec ($ch);
     
     
    echo $recup_html;
    voici l'erreur :

    Access forbidden!

    You don't have permission to access the requested object. It is either read-protected or not readable by the server.

    If you think this is a server error, please contact the webmaster.
    Error 403


    le serveur peut-il être configuré pour générer ce genre d'erreur, ou s'agit-il d'une erreur de syntaxe de ma part ?

    je précise aussi que du coté de la page sensée renvoyer la réponse j'ai simplifié au maximum pour faire des tests puisque son seul code est :

    Merci d'avance pour vos réponses
    Peut être que ce commentaire de la doc officielle t'aideras :
    http://fr2.php.net/manual/fr/curl.examples.php#83876

    Et sinon as tu essayé d'attaquer ton url avec un form classique pour voir si tout fonctionne bien en post ?

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Points : 316
    Points
    316
    Par défaut
    Bonsoir Kaymak,

    Je me suis rendu sur l'url que tu m'as indiqué et je trouve cela plutôt curieux :

    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
     
    This simple code work fine using libcurl versions before 7.18.x.
     
    <?php
            $ch = curl_init("www.example.com/curl.php?option=test");
            curl_setopt($ch, CURLOPT_HEADER, 0);
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            $output = curl_exec($ch);      
            curl_close($ch);
            echo $output;
    ?>
     
    If you have some trouble (Ex.: Failed to open/read local data from file/application) using a similar code with libcurl 7.18.x, try to add the option curl_setopt($ch, CURLOPT_POSTFIELDS, "").
     
    I think there was a change in the option CURLOPT_POST. Now, to use this option, it seems to be necessary to set the option CURLOPT_POSTFIELDS.
    En effet dans cet exemple les variables sont passées en GET :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $ch = curl_init("www.example.com/curl.php?option=test");
    et l'utilisateur ajoute l'option :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    curl_setopt($ch, CURLOPT_POST, 1);
    Quoi qu'il en soit, il est préconisé dans l'exemple en cas de problème de rajouter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    curl_setopt($ch, CURLOPT_POSTFIELDS, "")
    Ce qui me parrait indispensable pour passer des variables en POST et que je fais dans mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    curl_setopt($ch, CURLOPT_POSTFIELDS, 'dateDu=2009-01-01&dateAu=2009-01-31' );
    D'autre part si je n'ai pas essayé d'utiliser un formulaire pour tester le passage de données en POST, j'ai fait encore plus simple en faisant une page qui n'utilise aucune des variables passées puisque son seul code était :

    Je ne pense donc pas que l'erreur pouvait venir d'une mauvaise interprétation des variables.

    Pour répondre à FoxLeRenard : Ok nous en discuterons lundi, mais compte tenu que la réponse n'est pas destinée à être directement lue par l'utilisateur je ne pense pas qu'un form puisse faire l'affaire.

    Bonne soirée

  9. #9
    FoxLeRenard
    Invité(e)
    Par défaut
    Pour répondre à FoxLeRenard : Ok nous en discuterons lundi, mais compte tenu que la réponse n'est pas destinée à être directement lue par l'utilisateur je ne pense pas qu'un form puisse faire l'affaire.
    OK je te mets un message privé...

Discussions similaires

  1. [WM20] HTTPRequête avec methode POST fonctionne sur android mais pas sur ios
    Par law56100 dans le forum Windev Mobile
    Réponses: 2
    Dernier message: 01/07/2015, 11h20
  2. Réponses: 1
    Dernier message: 29/05/2012, 10h36
  3. Réponses: 1
    Dernier message: 28/05/2012, 14h37
  4. Formulaire fonctionne en GET mais pas en POST
    Par heraieros dans le forum Langage
    Réponses: 11
    Dernier message: 08/09/2009, 11h53
  5. Fsockopen fonctionne en get mais pas en post
    Par Defaite dans le forum Langage
    Réponses: 1
    Dernier message: 23/09/2008, 16h43

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