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 :

[Tableaux] file_get_contents et la méthode post


Sujet :

Langage PHP

  1. #1
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 15
    Par défaut [Tableaux] file_get_contents et la méthode post
    Bonjour,

    J'aimerais utiliser la fonction file_get_contents pour récupérer le code source HTML d'une URL (avec autorisation bien sur) mais mon problème est que pour appeler cette page je dois fournir des élément en post

    Exemple je voudrais récupérer le contenu de toto.php mais il faut un élément en poste exemple nb_toto qui doit contenir une valeur.

    Je voudrais savoir s'il n'est pas possible d'appeler file_get_contents avec en paramètre un élément de type post

    Merci beaucoup

  2. #2
    Membre chevronné Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 428
    Par défaut
    Bonjour,
    Tu devrais t'en sortir en utilisant curl.
    Regarde sur le forum, il y a pas mal de topics qui expliquent comment l'utiliser, sinon sur php.net, il y a aussi une bonne documentation.

    Bon courage,

    Sohnic

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Citation Envoyé par Mcthief
    Je voudrais savoir s'il n'est pas possible d'appeler file_get_contents avec en paramètre un élément de type post
    Oui, avec une version 5, en utilisant un contexte pour (re)définir les options par rapport au protocole employé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function http_post($url, $data) {
        $serialized_data = http_build_query($data);
        $options = array(
            'http' => array(
                'method' => 'POST',
                'header' => "Content-type: application/x-www-form-urlencoded\r\n" . 'Content-Length: ' . strlen($serialized_data) . "\r\n",
                'content' => $serialized_data
            )
        );
        $contexte = stream_context_create($options);
        return file_get_contents($url, 0, $contexte);
    }
     
    $content = http_post('http://mon_domaine/mapage', array('var1' => 'val1', /* ... */, 'varN' => 'valN'));
    (non testé)

  4. #4
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 15
    Par défaut
    Ok merci mais je n'ai pas PHP 5 sur le serveur. Je vais donc essayer de me diriger vers curl pour voir si c'est possible...

  5. #5
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 15
    Par défaut
    J'ai un problème avec curl.
    voila mon script :
    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
    <?php
    // Données à envoyer
    $post = array(
       'reqid' => '200', 'precision' => '5920858'
    );
     
    // On effectue la requête avec cURL
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'XXX.php');
    curl_setopt($ch, CURLOPT_POST, TRUE);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    $ret = curl_exec($ch);
    if (!$ret) {
    	echo curl_error($ch);
    } else {
    	echo $ret;
    }
    curl_close($ch);
    ?>
    cela me retourne ce résultat : Operation timed out after 2000 milliseconds with 0 bytes received

    je ne comprends pas à quoi cela peut être dû puisque en utilisant urlparam sur l'adresse XXX.php et en ajoutant les données precision et reqid en post cela marche très bien...

    Avez-vous déjà eu cette erreur?

    Merci

  6. #6
    Membre chevronné
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Par défaut
    si je ne m'abuse, les données à poster devraient etre sous forme de chaine et non sous forme de tableau ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $post = "reqid=200&precision=5920858";
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    Par contre, aucune idée si cela pourrait corriger ton problème (peut-être que si les paramètres sont mal passés à ta page, cela posait le problème?)

    A tester...

  7. #7
    Membre chevronné Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 428
    Par défaut
    C'est vrai que dans la doc de php.net, on passe un tableau.
    Par contre on passe 1 et non true pour CURLOPT_POST (http://fr3.php.net/manual/fr/function.curl-setopt.php Exemple2 : telecharger un fichier). J'essaie de retrouver les scripts que j'utilisais a une epoque. Curieusement il me semble bien que je passais une chaine et non un tableau comme le dit bkill....

    S.

  8. #8
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 15
    Par défaut
    Oui exacte je vous remercie beaucoup, maintenant ça marche nikel avec la chaine bizarre que dans la doc ils stipulent un tableau....

  9. #9
    Membre chevronné Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 428
    Par défaut
    Je confirme : je passais mes données com bkill, via une chaine de caractères et non un tableau....

    S.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Transmettre tableaux avec la méthode POST
    Par Fabriknet dans le forum Langage
    Réponses: 2
    Dernier message: 06/04/2010, 15h30
  2. [JSP] Méthode post entre 2 jsp
    Par SteelBox dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 13/03/2009, 01h20
  3. Réponses: 3
    Dernier message: 04/07/2007, 21h00
  4. Formulaire utilisant la méthode POST + popup
    Par Hell dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 27/10/2004, 13h34
  5. [HTTP] Syntaxe méthode POST
    Par Gruik dans le forum Développement
    Réponses: 3
    Dernier message: 26/07/2003, 17h12

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