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 :

Flux RSS sur Safari


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 230
    Par défaut Flux RSS sur Safari
    Bonjour,

    Je génère un fichier XML pour faire mon flux RSS en PHP.
    Avec la réécriture d'URL, le lien vers le flux RSS est de la forme "rss.html".
    Cette page renvoi un fichier XML bien formé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?xml version="1.0" encoding="UTF-8"?>
    <rss version="2.0">
    <channel>
     
    ...
     
    </channel>
    </rss>
    De plus, avant tout affichage, je renvoi l'entête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    header("Content-Type: application/rss+xml; charset=UTF-8");
    Ceci fonctionne correctement sur tous les navigateurs sauf Safari qui renvoi une erreur inconnue. En appelant le lien directe du fichier, Safari fonctionne correctement.

    D'où se problème peut-il venir ?

    Je pourrais facilement le contourner en générant le fichier autrement puis diriger le visiteur directement sur le fichier XML mais j'aimerais savoir pourquoi Safari ne fonctionne pas.

    Merci.

  2. #2
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Avec la réécriture d'URL, le lien vers le flux RSS est de la forme "rss.html".
    Je t'avoue que je fais jamais d'essai sur Safari

    Mais comme ça, as tu essayé de renommer le fichier (et le lien) par "rss.php" ?
    C'est peut être l'extension .html qui le dérange vu que le contenu n'est pas du HTML mais du XML.


    Théoriquement, il devrait plutôt s'appeler "rss.xml", et définir coté Apache que les fichier XML peuvent être interprétés par Php (ou juste celui ci), si ce flux est généré dynamiquement par Php.
    Enfin, théoriquement.


    Ceci dit, est ce que le lien ne comporterait pas une erreur ?

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 230
    Par défaut
    J'ai essayé de renommer .html en .php et .xml mais ca ne change rien. Tant que c'ets PHP qui construit la requête, rien n'y fait, Safari me renvoi toujours l'erreur suivante :

    "Safari ne parvient pas à ouvrir la page « feed://xxxxxxxxxxx/rss.html ». L’erreur est : « erreur inconnue » (CFURLErrorDomain:303) Choisissez Aide > Signaler un bogue à Apple, notez le numéro d’erreur et décrivez ce que vous avez fait avant l’affichage du présent message."

    Je pense qu'il doit attendre une en-tête spéciale en plus de Content-type.

    Pour se qui est de l'erreur sur le lien, ça fonctionne très bien avec les autres navigateurs.

    Je précise qu'il s'agit de Safari sur Windows 7.

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    ton feed est validé ?
    http://validator.w3.org/feed/

  5. #5
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Safari ne parvient pas à ouvrir la page « feed://xxxxxxxxxxx/rss.html »
    feed:// ??

    Il est comme ça le lien ?

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par RunCodePhp Voir le message
    feed:// ??

    Il est comme ça le lien ?
    oui sous safaris c'est comme ça, firefox les lit aussi

  7. #7
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    oui sous safaris c'est comme ça, firefox les lit aussi
    ah bon.

    Ne faudrait il alors que ça soit : feed://xxxxxxxxxxx/rss.rss ?
    Avec l’extension qui va avec ?
    C'est peut être Apache qui est déboussolé, et renverrait quelque chose ne non conforme ?

    Avec un URL comme http://xxxxxxxxxxx/rss.html, est ce que le problème est le même ?

    Je pense qu'il doit attendre une en-tête spéciale en plus de Content-type.
    Peut être, qui sait.
    Le Content-length ?
    Et sans aucune entête, ça donne quoi ?


    En tout cas, il est vrai qu'il faut au moins que le document RSS soit valide, conforme, quitte à faire un essai "en dur" basique d'abord.

  8. #8
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 230
    Par défaut
    C’est bon le problème est corrigé.

    Pour ceux qui se heurteront au même problème, il suffit d'envoyer l'en-tête Content-Length afin que Safari traite correctement le flux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    header("Content-Type: application/rss+xml; charset=UTF-8");
    header("Content-Length: " . mb_strlen($szCodeFlux));
    Merci à vous pour votre aide.

  9. #9
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    il est généré à la volé ton xml ? le contenu c'est quoi ? des articles ?

  10. #10
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 230
    Par défaut
    Grosso modo quand l'administrateur modifie un article, le fichier xml est supprimé.

    Puis, quand un visiteur veut afficher le flux RSS, c'est en fait un fichier PHP qui est appelé.
    Ce fichier PHP test l'existence du fichier XML :
    - Si il existe alors il renvoi directement le contenu du fichier.
    - Si il n'existe pas, il interroge la base de données pour créer le fichier, puis il renvoi le contenu.

  11. #11
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    ton ça sert a rien se faire mb_strlen, puisque tu crées un fichier renvoie la taille du fichier

  12. #12
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 230
    Par défaut
    Oui je pourrais renvoyer directement la taille du fichier.
    J'ai utilisé mb_strlen car le contenu du fichier est dans la variable.

  13. #13
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par Azharis Voir le message
    Oui je pourrais renvoyer directement la taille du fichier.
    J'ai utilisé mb_strlen car le contenu du fichier est dans la variable.
    ce n'est pas une bonne chose a faire, tu surcharges la mémoire pour rien.

  14. #14
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 230
    Par défaut
    Bon concernant le problème avec Safari finalement ça ne venait pas du tout des en-tête.

    C'était dû au fait qu'il fallait s'identifier pour accéder au site (connexion géré par htaccess et htpasswd) et Safari ne l'accepte pas.
    Donc pour mon problème va disparaitre une fois le site public.

    Sinon pour répondre à stealth35, c’est stocké dans une variable car j'utilise le système de cache obstream.
    C'est sur que ça utilise de la mémoire supplémentaire, mais ça permet de gérer mes pages différemment.

  15. #15
    Membre averti
    Profil pro
    Développeuse Web
    Inscrit en
    Octobre 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse Web

    Informations forums :
    Inscription : Octobre 2011
    Messages : 23
    Par défaut Complément, quelques années + tard !
    Salut, juste pour dire à ceux qui liront ça maintenant que de mon côté, c'était bel et bien les en-têtes. Mon site était déjà public et il n'y avait pas de conflit avec le .htaccess. L'ajout des en-tête - avec juste strlen() au lieu de mb_strlen() - a parfaitement fonctionné.

    La seule chose bizarre c'est que ça s'est mis à arrêter de fonctionner sans raison apparente. Il y a peu, je lisais mon flux rss.php sans problème sous safari...

    A+ et merci de la trouvaille

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

Discussions similaires

  1. Les flux RSS sur les nouveaux forums developpez.com
    Par Anomaly dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 2
    Dernier message: 21/10/2007, 17h26
  2. [PHP-JS] flux RSS sur SON site
    Par Ice-tea dans le forum Langage
    Réponses: 2
    Dernier message: 27/09/2006, 11h52
  3. [Dev Web] Afficher des flux RSS sur un site
    Par R314R dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 01/09/2006, 08h27
  4. A quand un flux RSS sur les news?
    Par Invité dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 2
    Dernier message: 08/12/2005, 22h47
  5. Recuperation de flux RSS sur un site
    Par Merkutio dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 17/08/2005, 21h01

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