Bonjour,
je dois "fabriquer" une page permettant d'afficher le contenu du répertoire courant... un peu comme qu'on ont tape une adresse ne contenant pas de fichiers index.xxx

Aucun problème jusque la je fait le code suivant :



<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>CL-Innovation - Documents Applicables</title>
<style type="text/css">
<!--
html{
	background-color: #FFFFFF;
	FONT-SIZE: 12px; 
	BACKGROUND: #FFFFFF; 
	COLOR: #0C4680; 
	FONT-FAMILY: "Century Gothic";
	background-image:url(../../img/background.jpg);
	background-repeat:no-repeat;
}

a {
	FONT-SIZE: 12px; 
	color: #5FAAE9;
	FONT-FAMILY: "Century Gothic";
	font-style:normal;
}

-->
</style>

</head>
<body style="margin-top:150px; margin-left:200px;">
<? $dossier = array_pop(explode('/', $repertoire = dirname( $PATH_TRANSLATED ))); ?>

<?
if ($handle = opendir('.')) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != ".." && $file != "index.php") 
		{
        	//recupération de l'extension du fichier pour "attribution" de l'incone
			$path_parts = pathinfo($file);
			$exten = $path_parts['extension'];
			
			//affichage de l'icone suivi du nom du fichier
			print "<a href=\"$file\"><img src=\"../../img/$exten.jpg\" border=0 /> $file\n</a><br />";
        }
    }
    closedir($handle);
}
?>

</body>
</html>



J'ai un affichage correct, les caractères "spéciaux" s'affiche correctement, mais lorsque de clique sur le nom d'un fichier contenant un caractère spécial (é à è ° etc...) j'ai une erreur 404...

Info :

-quand le passe ma souris sur un lien avec caractère spécial, tout les caractères s'affichent correctement dans la barre d'état, mais sur l'erreur 404 j'ai "The requested URL /URL_DE_MON_FICHIER/fichier N°24.pdf was not found on this server." En gros il y a un  qui apparait systématiquement devant le caractère spécial...

-J'ai teste de passer la page en UTF8... ca ne fonctionne pas du tout, j'ai des points d'interrogation à la place des é à è °...

Gtrand merci pour votre aide Smiley smile
Modérateur
Salut,

Ne peux-tu pas tout simplement supprimer les caractères spéciaux de tes urls car c'est vivement déconseillé ?
Ouais, j'y ai penser, mais ce n'est pas moi qui vais mettre les fichiers en ligne, ces fichiers doivent "absolument"... rester nommés comme ils le sont aujourd'hui...

mais le plus étrange, c'est que si je ne met pas mon fichier php, j'ai la page tout moche d'apache... qui elle fonctionne très bien Smiley sweatdrop
Modérateur
Johnlemon a écrit :
Ouais, j'y ai penser, mais ce n'est pas moi qui vais mettre les fichiers en ligne, ces fichiers doivent "absolument"... rester nommés comme ils le sont aujourd'hui...
Et bien dans ce cas, fait passer l'info à tes clients qu'il serait peut-être temps qu'ils apprennent à nommer leur fichier correctement parce que sinon, tu ne peux garantir l'accès au fichier... Smiley cligne

Tu peux aussi créer une interface qui leur permettrait d'uploader les fichiers en les renommant correctement si ce n'est pas le cas.
C'est biensure une solution, mais aujourd'hui, le fichier sont accessible grâce à la page de Apache, et ça marche très bien, si je leur dit qu'ils doivent désormais bien nommer leur fichier alors qu'avant mon développement, ça fonctionnais très bien... je vais passer pour quelqu'un d'un peu incompétent...
de plus j'aimerais comprendre... Smiley eek
koala64 a écrit :
Et bien dans ce cas, fait passer l'info à tes clients qu'il serait peut-être temps qu'ils apprennent à nommer leur fichier correctement parce que sinon, tu ne peux garantir l'accès au fichier... Smiley cligne

Oui, enfin il doit aussi y avoir moyen de gérer les choses correctement en PHP! Il y a sans doute une faiblesse dans la manière dont son script est écrit ou dans les fonctions utilisées.

Pour commencer, il faudrait vérifier quel code HTML est généré par le script. Et si les URL contiennent des caractères non ASCII, il faudra peut-être (sans doute?) les échapper (voir Percent encoding).
Modifié par Florent V. (13 Sep 2008 - 19:26)
Pour info, j'ai testé ton script et, mon système de fichiers étant en UTF-8, les caractères non ASCII s'affichaient mal. J'ai déclaré la page en UTF-8 et les liens s'affichaient alors correctement. De plus, avec Firefox 3, des liens vers des fichiers nommés "éléphant.png" ou "Ça alors!" (sans extension pour ce dernier) marchaient parfaitement.
Modérateur
Je n'ai pas testé l'affichage des fichiers donc je ne remets pas en cause ce que tu disais au sujet de leur interprétation Florent Smiley cligne , mais le soucis que je mettais en avant, c'est que l'upload ne passe pas forcément (voire même la plupart du temps) par php. Le client est donc susceptible de transmettre n'importe quel nom de fichier.
Et si, par exemple, il inclue toutes sortes de caractères spéciaux, c'est alors le serveur qui prend le relais et transforme, suivant sa configuration, le nom du fichier. Certaines choses sont d'ores et déjà prévues mais d'autres non.

Après, le truc, c'est que modifier la configuration du serveur pour permettre n'importe quoi est, à mon sens, bien téméraire car c'est s'exposer à des problèmes de sécurité.

En somme, ça demande soit une formation pour qu'une personne ne vienne pas coller un "ws & <¤.pdf" soit de contraindre les utilisateurs à se servir d'une interface personnalisée pour transmettre leurs fichiers (et donc gérer les noms de fichier).
Modifié par koala64 (13 Sep 2008 - 19:54)
Hum, pour info, les fichiers sont transmis par le reseau local de l'entreprise sur un dossier partagé. il y a un script qui envoi ces fichier sur un serveur Web distant via FTP (toute les nuits...)

Il m'est impossible de modifier le paramétrage du serveur Web... Nous ne sommes pas les seuls clients sur ce serveur...

Extrait du code en UTF8 :

<a href="Suivi des &#65533;carts CRAT National.xls"><img src="../../img/xls.jpg" border=0 /> Suivi des &#65533;carts CRAT NationalS.xls
</a><br /><a href="Suivi des &#65533;carts CRAT R&#65533;gion.xls"><img src="../../img/xls.jpg" border=0 /> Suivi des &#65533;carts CRAT R&#65533;gion.xls
</a>


L'erreur 404 :
a écrit :

Not Found
The requested URL /Documents/Suivi des �carts CRAT R�gion.xls was not found on this server.

Extrait du code en iso-8859-1 :


<a href="Suivi des écarts CRAT National.xls"><img src="../../img/xls.jpg" border=0 /> Suivi des écarts CRAT National.xls
</a><br /><a href="Suivi des écarts CRAT Région.xls"><img src="../../img/xls.jpg" border=0 /> Suivi des écarts CRAT Région.xls
</a>


L'erreur 404 :

a écrit :

Not Found
The requested URL /Documents/Suivi des écarts CRAT Région.xls was not found on this server.
Johnlemon a écrit :
C'est ouf ça, moi, moi j'obtiens ça quand je passe en utf8:
upload/14118-utf8.JPG

Bah si ton système de fichiers est en ISO-8859-1 ou (plus probablement) en Windows-1252, c'est tout à fait normal. S'agit-il d'un serveur Windows? Auquel cas, si les noms de fichiers récupérés sont en Windows-1252 (encodage utilisé pour le système de fichiers sous Windows XP et sans doute Windows Server), il faut:
- soit servir ta page en Windows-1252;
- soit utiliser une fonction qui transforme les chaines de caractères récupérées de Windows-1252 à l'encodage souhaité (ISO-8859-1, UTF-8...).