Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/04/2011, 08h09   #1
Membre régulier
 
Inscription : avril 2005
Messages : 208
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 208
Points : 77
Points : 77
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 :
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 :
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.
__________________
Mes sites :
- Portail : http://denshichiro.free.fr
- Warlords Battlecry 3 : http://warlordsbattlecry.free.fr
- Littérature : http://livresethistoires.free.fr
- Joueurs de Street Fighter 4: http://joueurs.sf4.free.fr
Azharis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 08h56   #2
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 709
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 709
Points : 3 279
Points : 3 279
Salut

Citation:
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 ?
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 10h11   #3
Membre régulier
 
Inscription : avril 2005
Messages : 208
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 208
Points : 77
Points : 77
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.
__________________
Mes sites :
- Portail : http://denshichiro.free.fr
- Warlords Battlecry 3 : http://warlordsbattlecry.free.fr
- Littérature : http://livresethistoires.free.fr
- Joueurs de Street Fighter 4: http://joueurs.sf4.free.fr
Azharis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 10h31   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
ton feed est validé ?
http://validator.w3.org/feed/
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 10h49   #5
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 709
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 709
Points : 3 279
Points : 3 279
Citation:
Safari ne parvient pas à ouvrir la page « feed://xxxxxxxxxxx/rss.html »
feed:// ??

Il est comme ça le lien ?
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 10h51   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
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
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 11h00   #7
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 709
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 709
Points : 3 279
Points : 3 279
Citation:
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 ?

Citation:
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.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 13h33   #8
Membre régulier
 
Inscription : avril 2005
Messages : 208
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 208
Points : 77
Points : 77
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 :
1
2
header("Content-Type: application/rss+xml; charset=UTF-8");
header("Content-Length: " . mb_strlen($szCodeFlux));
Merci à vous pour votre aide.
__________________
Mes sites :
- Portail : http://denshichiro.free.fr
- Warlords Battlecry 3 : http://warlordsbattlecry.free.fr
- Littérature : http://livresethistoires.free.fr
- Joueurs de Street Fighter 4: http://joueurs.sf4.free.fr
Azharis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 13h42   #9
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
il est généré à la volé ton xml ? le contenu c'est quoi ? des articles ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 13h54   #10
Membre régulier
 
Inscription : avril 2005
Messages : 208
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 208
Points : 77
Points : 77
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.
__________________
Mes sites :
- Portail : http://denshichiro.free.fr
- Warlords Battlecry 3 : http://warlordsbattlecry.free.fr
- Littérature : http://livresethistoires.free.fr
- Joueurs de Street Fighter 4: http://joueurs.sf4.free.fr
Azharis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 14h11   #11
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
ton ça sert a rien se faire mb_strlen, puisque tu crées un fichier renvoie la taille du fichier
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2011, 07h52   #12
Membre régulier
 
Inscription : avril 2005
Messages : 208
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 208
Points : 77
Points : 77
Oui je pourrais renvoyer directement la taille du fichier.
J'ai utilisé mb_strlen car le contenu du fichier est dans la variable.
__________________
Mes sites :
- Portail : http://denshichiro.free.fr
- Warlords Battlecry 3 : http://warlordsbattlecry.free.fr
- Littérature : http://livresethistoires.free.fr
- Joueurs de Street Fighter 4: http://joueurs.sf4.free.fr
Azharis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2011, 16h21   #13
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
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.
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2011, 17h20   #14
Membre régulier
 
Inscription : avril 2005
Messages : 208
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 208
Points : 77
Points : 77
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.
__________________
Mes sites :
- Portail : http://denshichiro.free.fr
- Warlords Battlecry 3 : http://warlordsbattlecry.free.fr
- Littérature : http://livresethistoires.free.fr
- Joueurs de Street Fighter 4: http://joueurs.sf4.free.fr
Azharis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 20h52   #15
Futur Membre du Club
 
Développeuse Web
Inscription : octobre 2011
Messages : 17
Détails du profil
Informations professionnelles :
Activité : Développeuse Web

Informations forums :
Inscription : octobre 2011
Messages : 17
Points : 18
Points : 18
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
mazamazine est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h45.


 
 
 
 
Partenaires

Hébergement Web