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 :

Alternative à la fonction fopen?


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Alternative à la fonction fopen?
    Bonjour,

    je cherche a développer un petit script php qui relève une valeur boursière.
    J'ai réussi a adapter un bout de code pour lire un csv et mettre en forme les information a ma convenance. Ce code utilise la fonction fopen qui semble bloquer sur notre réseau d'entreprise.

    Je fais donc appel à vos connaissance pour savoir si il est possible d'adapter mon code pour qu'il fonctionne sur notre réseau.

    Avez vous une piste SVP?

    voici la partie php de mon code:
    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
    <?php
    $tickersymbol = "EI.PA";
    $open = fopen("http://quote.yahoo.com/d/quotes.csv?s=$tickersymbol&f=sl1d1t1c1ohgv&e=.csv", "r");
    $read = fread($open, 2000);
    fclose($open);
    $read = str_replace("\"", "", $read);
    $read = explode(",", $read);
    $read = str_replace("\"", "", $read);
    IF ($read[1] == 0)
    {
    echo ("The symbol you provided (<b>\"$tickersymbol\"</b> doesn't appear to be registered</FONT>");
    }
    ELSE
    {
    print "<span class=\"action\">$read[1]  </span>";
    print "";
    }
    $change = $read[4];
    if ($change[0] == "+") {
    print "<span class=\"vert\"><img src=\"up.png\" height=\"15\" width=\"15\" >  $change%  </span>";
    }
    else if ($change[0] == "-") {
    print "<span class=\"rouge\"><img src=\"down.png\" height=\"15\" width=\"15\" >  $change%  </span>";
    }
    else {
    print "$change</span>";
    }
    $date = date("d-m-Y");
    $heure = date("H:i");
    Print("<span class=\"heure\">  $heure</span>");
    ?><br></th>
      </tr>
      <tr>
        <td><?php $ouverture = $read[5];
    print "<span class=\"ouverturetitle\">Valeur à l'ouverture:</span><span class=\"ouverture\">$ouverture</span><br>"; ?></td>
      </tr>
      <tr>
        <td><?php $haut = $read[6];
    print "<span class=\"hauttitle\">Valeur au plus haut:</span><span class=\"haut\">$haut</span><br>"; ?></td>
      </tr>
      <tr>
        <td><?php $bas = $read[7];
    print "<span class=\"bastitle\">Valeur au plus bas:</span><span class=\"bas\">$bas</span><br>"; 
    ?>

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    En fait ton code dépends de la valeur de la directive allow_url_fopen. Tu peux changer de méthode et passer par SplFileObject ou par file_get_contents, le résultat sera le même car toutes dépendent implicitement de fopen.

    Il faut donc activer cette directive dans le php.ini.

    Ah et pour lire un CSV il vaut mieux faire comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    if ($handle = fopen('http://...')) {
      while ($row = fgetcsv($handle, 1024, ',')) {
         ...
      }
    }

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    En fait mon php.ini est bon.
    mon serveur sur une livebox, mon script tourne correctement.
    Par contre mon serveur dans le réseau de l'entreprise, j'ai ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [function.fopen]: failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden
    Ma question est donc, est il possible de faire autrement pour ne pas être bloqué par le proxy?

  4. #4
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Ah, c'est la faute au proxy. Qu'a cela ne tienne il faut utiliser les options du wrappeur HTTP. Pour ça tu vas devoir créer un contexte avec stream_create_context et le passer à fopen. Tu peux t'inspirer de cette solution.

    Voir la doc:


    Enjoy

Discussions similaires

  1. fonction Fopen
    Par TheOrY dans le forum Langage
    Réponses: 4
    Dernier message: 04/02/2007, 10h42
  2. Que renvoie la fonction fopen?
    Par PorkyFighter dans le forum C
    Réponses: 11
    Dernier message: 17/10/2006, 00h15
  3. Bouton alternant 2 fonctions sur le meme evenement onClick
    Par Rocca dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 31/01/2006, 09h16
  4. cherche alternative à la fonction Sleep()
    Par anthracite dans le forum C++
    Réponses: 7
    Dernier message: 26/10/2005, 16h07
  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