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 :

Afficher un fichier texte issu d'un autre site Web


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 84
    Points : 42
    Points
    42
    Par défaut Afficher un fichier texte issu d'un autre site Web
    Bonjour. Je ne suis pas un programmeur web professionnel et ma question va probablement vous paraître naïve.
    Je voudrais afficher dans une page html blanche un fichier texte très simple (2 lignes) issu d'un autre site web.
    J'ai écrit ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <!DOCTYPE html>
    <html>
    <body>
     
    <?php
    echo file_get_contents("https://tgftp.nws.noaa.gov/data/observations/metar/stations/LFPV.TXT");
    ?>
     
    </body>
    </html>
    Lorsque j'ouvre la page htm correspondante sur mes pages persos, il ne se passe rien. Page blanche. Le petit fichier texte LFPV.TXT ne s'affiche pas.
    Pourtant, si je colle l'url directement dans mon navigateur, le texte s'affiche bien.
    Merci pour votre aide.
    Gab

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 201
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 201
    Points : 8 426
    Points
    8 426
    Billets dans le blog
    17
    Par défaut
    Lorsque j'ouvre la page htm correspondante sur mes pages persos
    L'hébergeur autorise-t-il les connexions sortantes ?
    As-tu testé ton script en local ?
    L'affichage des erreurs est-il activé ? (cf. php.net/error-reporting)

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 84
    Points : 42
    Points
    42
    Par défaut
    Connexions sortantes bien autorisées
    En local, page blanche
    Le débogueur ne signale pas d'erreur de syntaxe.
    Si je colle un bouton dans ma page avec le lien hypertexte de la fonction get, le navigateur ouvre bien le petit fichier TXT.

  4. #4
    Membre éclairé
    Homme Profil pro
    Autre
    Inscrit en
    Juillet 2021
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Juillet 2021
    Messages : 351
    Points : 719
    Points
    719
    Par défaut
    La directive allow_url_fopen est bien activée dans la configuration de PHP (essaye avec ini_get si tu n'as pas accès au fichier de configuration php.ini) ?

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
     
    echo 'allow_url_fopen ? ';
    var_dump(ini_get('allow_url_fopen'));
     
    $content = file_get_contents('https://tgftp.nws.noaa.gov/data/observations/metar/stations/LFPV.TXT');
     
    if (false === $content) {
        print_r(error_get_last());
    }
     
    echo $content;

  5. #5
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 84
    Points : 42
    Points
    42
    Par défaut
    Merci pour la proposition de code.
    Malheureusement, cela ne change rien.
    J'ai toujours une page blanche.
    Peut-être est-ce dû au fait que le site qui héberge mes pages persos n'est pas sécurisé.
    La requête file_get est envoyée vers un site sécurisé et peut-être que le site en question refuse les requêtes
    venant de sites non-sécurisés ?
    En fait, je n'y connais pas grand-chose !
    Merci de vous êtes penchés sur mon petit problème.
    Gab

  6. #6
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 888
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 888
    Points : 6 632
    Points
    6 632
    Par défaut
    Les trois quarts du temps c'est parce que le site s'attend à avoir une requête d'un navigateur et pas d'un serveur. Donc en lui fournissant un user-agent bidon via un contexte de flux, tu devrais arriver à tes fins:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $options  = [
        'http' => [
            'user_agent' => 'Mozilla/5.0 (X11; Linux x86_64; rv:121.0) Gecko/20100101 Firefox/121.0'
        ]
    ];
    $context = stream_context_create($options);
    $content = file_get_contents('https://tgftp.nws.noaa.gov/data/observations/metar/stations/LFPV.TXT', false, $context);

  7. #7
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 84
    Points : 42
    Points
    42
    Par défaut
    Merci pour le message. En fait, après création d'une page "getmetar.php" uploadée sur mes pages persos free ("monsite"), j'ai les erreurs suivantes qui apparaissent :

    Warning: file_get_contents() [function.file-get-contents]: Unable to access https://tgftp.nws.noaa.gov/data/obse...tions/LFPV.TXT in /mnt/100/sda/4/f/monsite/getmetar.php on line 20
    Warning: file_get_contents(https://tgftp.nws.noaa.gov/data/obse...tions/LFPV.TXT) [function.file-get-contents]: failed to open stream: No such file or directory in /mnt/100/sda/4/f/monsite/getmetar.php on line 20
    On dirait que mon serveur Free recherche le fichier TXT quelque part sur "monsite" mais n'envoie pas de requête vers le site https où se trouve le fichier TXT.

  8. #8
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 201
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 201
    Points : 8 426
    Points
    8 426
    Billets dans le blog
    17
    Par défaut
    Connexions sortantes bien autorisées
    En fait, après création d'une page "getmetar.php" uploadée sur mes pages persos free ("monsite")
    Comment as-tu testé que les connexions sortantes sont autorisées par l'hébergeur ?

    Autant que je sache les pages persos Free sont restreintes à quelques domaines sur les connexions sortantes.

  9. #9
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 84
    Points : 42
    Points
    42
    Par défaut
    J'ai lu les conditions générales des pages persos free et les divers chapitres sur les paramètres des pages persos et je n'y ai rien lu qui stipule que les connexions sortantes étaient limitées. Vous en savez probablement plus que moi sur le sujet et si vous pouvez me mettre un lien vers des informations plus précises sur le sujet, je suis preneur.
    Ce qui est sûr c'est qu'il y a plusieurs liens hypertextes sur mes pages qui permettent de se connecter sur d'autres sites et tous ces liens fonctionnent.
    Peut-être que quelque chose m'échappe ? Comme je l'ai écrit plus haut, je ne suis pas un spécialiste de la programmation web.

  10. #10
    Membre éclairé
    Homme Profil pro
    Autre
    Inscrit en
    Juillet 2021
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Juillet 2021
    Messages : 351
    Points : 719
    Points
    719
    Par défaut
    Un lien hypertexte est différent d'une requête avec file_get_contents.
    Avec un lien, c'est le client (navigateur) qui fait la requête. Avec file_get_contents, c'est le serveur (PHP) qui fait la requête (à condition que le serveur y soit autorisé).

    D'après plusieurs discussions similaires sur d'autres forums, les connexions sortantes semblent effectivement restreintes à une liste blanche pour les pages perso free.
    Tu peux à priori faire une demande sur le newsgroup proxad.free.services.pagesperso pour ajouter ton site distant à la liste blanche.

    https://www.aduf.org/viewtopic.php?p=1903802
    https://assistance.free.fr/articles/766
    http://les.pages.perso.chez.free.fr/...senet-pfspp.io

  11. #11
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 84
    Points : 42
    Points
    42
    Par défaut
    Merci pour tout.
    Il semble en effet que cette fonction file_get_contents soit bloquée chez free (bien qu'elle n'apparaisse pas dans la liste publiée par free !).
    Je vais abandonner mon projet (c'était pour faire plaisir à un utilisateur).
    Bonne année à la communauté
    Gab

  12. #12
    Membre éclairé
    Homme Profil pro
    Urbaniste
    Inscrit en
    Août 2023
    Messages
    386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Août 2023
    Messages : 386
    Points : 798
    Points
    798
    Par défaut
    Bonjour,

    on trouve de tout sur internet.

    https://nordicapis.com/10-free-to-use-cors-proxies/

    Du coup, on peut essayer de contourner le problème,
    moyennant une inclination quand aux choix d'implémentation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fetch("https://corsproxy.io/?https%3A%2F%2Ftgftp.nws.noaa.gov%2Fdata%2Fobservations%2Fmetar%2Fstations%2FLFPV.TXT").then(console.log).catch(console.error);
    Rien n'empêche, si on ne veut pas, peut pas, le traiter côté client,
    de faire un re-post depuis le client sur votre serveur free pour faire votre chose.

    Bonne journée

Discussions similaires

  1. comment afficher un fichier text sur un dbgrid
    Par nessing dans le forum C++Builder
    Réponses: 5
    Dernier message: 12/05/2007, 16h42
  2. Afficher un fichier texte qu'on vient de créer ?
    Par uranium-design dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 11/04/2007, 15h22
  3. Réponses: 4
    Dernier message: 15/03/2007, 11h13
  4. afficher un fichier texte
    Par transistor49 dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 06/01/2006, 14h24
  5. Réponses: 7
    Dernier message: 23/03/2005, 22h23

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