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 :

Echec de la fonction fopen


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 30
    Points : 36
    Points
    36
    Par défaut Echec de la fonction fopen
    Bonjour,

    Je crée un serveur HTTP dans un environnement virtuel (Second Life) et je dois envoyer des informations. Lorsque j'utilise un formulaire HTML standard avec la méthode POST tout se passe bien. Mais quand je veux lancer ma requête à partir de PHP je n'y parviens pas. J'obtiens un "request fail". Voici le code que j'utilise à partir d'un serveur de free :

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    <?php
     
    include ("connexion.inc.php");
     
    $data = array ('x' => $_GET['x'], 'y' => $_GET['y'], 'z' => $_GET['z']);
     
    if (!function_exists('http_build_query')) {
        function http_build_query($data, $prefix='', $sep='', $key='') {
            $ret = array();
            foreach ((array)$data as $k => $v) {
                if (is_int($k) && $prefix != null) {
                    $k = urlencode($prefix . $k);
                }
                if ((!empty($key)) || ($key === 0))  $k = $key.'['.urlencode($k).']';
                if (is_array($v) || is_object($v)) {
                    array_push($ret, http_build_query($v, '', $sep, $k));
                } else {
                    array_push($ret, $k.'='.urlencode($v));
                }
            }
            if (empty($sep)) $sep = ini_get('arg_separator.output');
            return implode($sep, $ret);
        }
    }
     
    function select($sql)
    {
        $result = mysql_query($sql);
        if (!$result)
            die('erreur');
        return $result;
    }
     
    $result = select("SELECT * FROM urls");
     
    $row = mysql_fetch_row($result);
     
    $data = http_build_query($data);
     
    $opts = array (
            'http' => array (
                'method' => 'POST',
                'header'=> "Content-type: application/x-www-form-urlencoded\r\n"
                    . "Content-Length: " . strlen($data) . "\r\n",
                'content' => $data
                )
            );
     
    $context  = stream_context_create($opts);
     
    $fp = fopen($row[0].'/', 'r', false, $context);
    fpassthru($fp);
    fclose($fp);
     
    echo "Envoyé !!!";
     
    ?>
    En fait je voudrais obtenir le strict équivalent de ce qu'envoie un formulaire mais apparemment je dois rater un truc... j'ai aussi essayé avec la librairie cURL sans succès

  2. #2
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Points : 2 399
    Points
    2 399
    Par défaut
    Tu as essayé d'afficher le contenu de $row[0] pour voir ce qu'elle contient ?

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 30
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par Seb33300 Voir le message
    Tu as essayé d'afficher le contenu de $row[0] pour voir ce qu'elle contient ?
    Elle contient une URL de la forme :

    http://sim5502.agni.lindenlab.com:12...6-7bc734123fdb

    Lorsque je mets cette URL comme destination d'un formulaire ça fonctionne :

    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
     
    include ("connexion.inc.php");
     
    function select($sql)
    {
        $result = mysql_query($sql);
        if (!$result)
            die('erreur');
        return $result;
    }
     
    $result = select("SELECT * FROM urls");
     
    $row = mysql_fetch_row($result);
     
    echo "<form method=\"post\" action=\"$row[0]\">\n";
    echo "  <p><label>X :\n";
    echo "  <input name=\"x\" type=\"text\"></label></p>\n";
    echo "  <p>\n";
    echo "  <label>Y :\n";
    echo "  <input name=\"y\" type=\"text\"></label></p>\n";
    echo "  <label>Z :\n";
    echo "  <input name=\"z\" type=\"text\"></label>\n";
    echo "  <p><input name=\"button\" value=\"Envoyer\"\n";
    echo " type=\"submit\"></p>\n";
    echo "</form>";

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 30
    Points : 36
    Points
    36
    Par défaut
    Mon code fonctionne, simplement je le testais à partir d'un serveur de free qui semble bloquer les requêtes HTTP.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 08/10/2009, 12h47
  2. problème avec la fonction fopen
    Par single dans le forum Langage
    Réponses: 5
    Dernier message: 24/03/2007, 11h40
  3. fonction Fopen
    Par TheOrY dans le forum Langage
    Réponses: 4
    Dernier message: 04/02/2007, 10h42
  4. Que renvoie la fonction fopen?
    Par PorkyFighter dans le forum C
    Réponses: 11
    Dernier message: 17/10/2006, 00h15
  5. [PLSQL HP3000] Fonction FOPEN
    Par anaon dans le forum Oracle
    Réponses: 6
    Dernier message: 06/10/2005, 09h50

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