passer et afficher un fichier xml à travers php

passer et afficher un fichier xml à travers php - PHP - Programmation

Marsh Posté le 14-03-2008 à 12:05:19    

bonjour.
je possède un logiciel qui génère des fichiers .xml
si je les ouvre dans firefox, l'affichage se passe normalement.
 
je souhaite sécuriser l'accès à ces fichiers, en identifiant le visiteur sur mon serveur web, et afficher le fichier xml s'il est correctement identifié.
 
mon fichier s'appelle 'index.php', et prend en paramètre la variable 'fichier' contenant le nom du fichier à passer. ce fichier est stocké dans un sous-dossier 'securite' interdit au public (deny from all dans le sous-dossier).
 
le source de mon fichier index.php est:
 
$contenu=file_get_contents("securite/".$fichier) or die("$fichier non trouvé" );
print $contenu;
exit;
 
donc un lien du type:
http://www.monsiteweb.fr/index.php?fichier=test.html
va afficher le fichier test.html qui est situé dans le sous-dossier 'securite'.
(tous les liens dans les fichiers html sont bien sur modifiés et pointent vers 'index.php?fichier=...'
 
ça fonctionne très bien pour des fichiers html, par contre, quand le fichier est un .xml, l'affichage est tout faux.
 
question: comment passer le contenu d'un fichier xml et l'afficher correctement avec php ?
 
merci de m'avoir lu. flope.

Reply

Marsh Posté le 14-03-2008 à 12:05:19   

Reply

Marsh Posté le 14-03-2008 à 12:12:02    

Avec le bon header ça devrait marcher :

Code :
  1. header('Content-Type: text/xml');


Attention, pense à la sécu dans ce genre de script

Reply

Marsh Posté le 14-03-2008 à 13:08:48    

non, j'ai déjà essayé, si j'ajoute:
header('Content-Type: text/xml');
il veut que j'enregistre le fichier, et ne l'affiche plus...

Reply

Marsh Posté le 14-03-2008 à 13:22:48    

Code :
  1. $contenu = file_get_contents("securite/".$fichier) or die("$fichier non trouvé" );
  2. echo htmlspecialchars($contenu);


 
Explications :
 
Ton xml n'a aucune information de style associée, donc il ne sera pas affiché (Un navigateur traite du html, ne l'oublions pas).
En utilisant htmlspecialchars, tu remplace les caractères liés aux balises ('<',...etc.) et tu forces ainsi l'affichage d'un flux de texte, considéré comme un document html archi-basique.


Message édité par CyberDenix le 14-03-2008 à 13:25:44

---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 14-03-2008 à 13:37:16    

oula non, c'est pire...
là, oui, il affiche bien le contenu 'pur' du fichier demandé, mais sans l'interpréter.

Reply

Marsh Posté le 14-03-2008 à 14:24:25    

oups c'est plutôt :

Code :
  1. header('Content-Type: application/xml');


Reply

Marsh Posté le 17-03-2008 à 09:25:30    

merci. application/xml fonctionne bien pour interpréter le xml.
j'ai encore d'autres problèmes, mais avec les fichiers .xsl
merci bien, ça me met sur la voie.
flope
 


Message édité par flope le 17-03-2008 à 09:26:57
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed