Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
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 14/06/2007, 11h53   #1
Nouveau Membre du Club
 
Inscription : avril 2006
Messages : 70
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 70
Points : 31
Points : 31
Par défaut [accents] Encodage des url

Bonjour,

J'ai besoin de passer des noms de fichiers avec accents par url, et j'utilise urlencode pour ce faire.

Code :
1
2
3
4
 
$url_path = urlencode($path);
$url_file = urlencode($file);
echo "<a href='selectedimage?path=$url_path&amp;file=$url_file'></a>";

J'ai donc un lien qui ressemble à ça, par exemple :
Code :
1
2
 
mapage/selectedimage?path=.%2Frepertoire%2Fsousrepertoire&file=B%E9n%E9dict.png
Je décode ensuite simplement avec urldecode :

Code :
1
2
3
4
 
$path = urldecode($_GET['path']);
$file = urldecode($_GET['file']);
echo "<img src='$path/$file' alt='image introuvable' />";
ça fonctionne très bien avec Firefox, mais ça ne fonctionne pas avec IE6, IE7, Opera et Konqueror. Je n'en ai pas essayé d'autres.

J'ai essayé avec rawurlencode/rawurldecode et base64_encode/base64_decode. Ca fonctionne toujours très bien avec Firefox et pas du tout avec les autres.

Que dois-je faire pour que tous les navigateurs comprennent ?
MorganStern est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2007, 13h39   #2
Membre régulier
 
Avatar de akara
 
Inscription : juin 2007
Messages : 299
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 299
Points : 81
Points : 81
& si tu faisais un str_replace() ?
à par ça je vois pas...
akara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2007, 13h49   #3
Expert Confirmé
 
Avatar de trotters213
 
Inscription : janvier 2005
Messages : 2 572
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : janvier 2005
Messages : 2 572
Points : 2 605
Points : 2 605

Lis la note de cette page, ça pourrait t'avancer : http://fr.php.net/urlencode

PS : tes 2 echos sont vraiment vilains (particulièrement le premier, je vois pas comment il peut marcher ??) :
Code :
echo '<a href="selectedimage?path='.$url_path.'&amp;file='.$url_file.'">'.$url_file.'</a>'
Code :
echo '<img src="'.$path.'/'.$file.'" alt="image introuvable" />';
__________________
Pensez au tag
Les règles du Forum

Dev. Web : FAQ (X)HTML/CSS | Tutos (X)HTML | Tutos CSS

PHP : FAQ PHP | Tutos PHP | Benchmark PHP 5

SQL : Cours SQL
trotters213 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2007, 16h46   #4
Nouveau Membre du Club
 
Inscription : avril 2006
Messages : 70
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 70
Points : 31
Points : 31
Effectivement, il y avait une erreur dans le premier code que j'avais présenté. Je me suis trompé en simplifiant la ligne "echo" pour vous la présenter. J'ai corrigé l'erreur. Mes lignes "echo" sont plus compliquée que ça en vérité.

[ sinon, je trouve mon code plus lisible que le tien ]
MorganStern est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2007, 18h11   #5
Expert Confirmé
 
Avatar de trotters213
 
Inscription : janvier 2005
Messages : 2 572
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : janvier 2005
Messages : 2 572
Points : 2 605
Points : 2 605
Citation:
Envoyé par MorganStern
[ sinon, je trouve mon code plus lisible que le tien ]
Oui mais les miennes sont conformes au W3C au niveau du HTML (oui, les valeurs des attributs sont entre doubles quotes et non entre simple quote) et elles sont plus rapides que les tiennes (car utilisation des simples quotes et concaténations au lieu des doubles quotes contenant des variables ce qui contraint le serveur à lire le contenu des chaines de caractères afin de pouvoir interpréter les variables contenues à l'intérieur)
__________________
Pensez au tag
Les règles du Forum

Dev. Web : FAQ (X)HTML/CSS | Tutos (X)HTML | Tutos CSS

PHP : FAQ PHP | Tutos PHP | Benchmark PHP 5

SQL : Cours SQL
trotters213 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2007, 00h08   #6
Membre confirmé
 
Inscription : mai 2006
Messages : 196
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 196
Points : 278
Points : 278
Euuh on va faire plus simple, oublie complètement les accents dans les URLs car les serveurs WINS(voir P.S.) ne vont pas trop aimer les accents, et généralement les navigateurs aussi n'aime pas non plus, car les accents n'étant pas utilisé dans tous les pays ils ne sont alors pas interprétés par défaut, franchement je te conseil de les oublier.

P.S. : Les serveurs WINS sont en fait des serveurs qui relient une URL à une addresse IP, par exemple quand tu entre 'www.google.fr' ou même 'google.fr' dans ton navigateur, ce dernier va alors demander à un serveur WINS l'IP associée à ce nom d'URL s'il existe et te le retourner ( en fait tous les sites du monde entier n'existe pas en tant que lettre(adresse) mais en tant qu'IP ), et généralement ces serveurs la sont sous UNIX(ou LINUX) et ne prennent pas en compte les accents (installation et administration avec l'encodage de caractère anglais, donc sans accents) donc tu risque surtout d'avoir d'énormes problèmes en mettant tes URL ou nom de fichier avec des accents . En gros si tu connais l'addresse IP d'un site, tu peut l'entrer directement dans ta barre d'addresse pour y accéder, de ce fait tu ne passera par aucun serveur WINS, donc ce sera plus rapide, un peu comme quand tu entre 192.168.1.1 pour accéder à la configuration de ton modem/routeur.

Pour exemple !!! : essaye de mettre comme addresse internet http://66.102.9.99/ tu arrivera sur google, sur un serveur situé à dublin en irlande, et ce sans passer par un serveur WINS car tu entrera une addresse IP directement. Tu remarquera aussi que le chargement est beaucoup plus rapide car tu évite la requête des serveurs WINS qui te renvoye une IP et seulement après tu sera réelement connecter au site.

J'espere que tu aura compris pourquoi il ne faut pas mettre d'accents dans les URL

P.S. 2 : J'avoue que je connais ceci car je suis étudiant en informatique spécialité Architecture des systèmes et réseaux, sans sa j'aurai pas répondu ^^
meliandah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2007, 12h02   #7
Nouveau Membre du Club
 
Inscription : avril 2006
Messages : 70
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 70
Points : 31
Points : 31
Bonjour,

Ne serait-ce pas plutôt les DNS dont tu parles là ? Et, à ma connaissance, les DNS ne s'occupent pas de répertorier le contenu des serveurs, mais traduisent seulement la racine des adresses que nous envoyons.

Il n'y a bien sûr pas d'accents sur le nom du site, ni même sur les noms des répertoires. Seuls les noms de fichiers peuvent éventuellement en contenir.

Je comprends cette préoccupation concernant les accents, mais en l'occurrence, le problème que je connais ne vient pas du serveur, puisque cela fonctionne avec l'un des navigateurs, Firefox.

Avec exactement la même adresse encodée avec urlencode, un copier/coller dans la barre d'adresse ne donne pas le même résultat selon le navigateur :
- Firefox trouve,
- les autres non.
Est-ce vraiment un problème de serveur ? ça ressemble plutôt à un problème de navigateur.

IE et cie gèrent-ils correctement le code MIME des url ? car, que je sache, le serveur ne change pas en fonction du navigateur qu'on emploie.

Enfin, les accents, j'en ai besoin ! En gros, les abandonner, ça revient à dire que les fonctions urlencode, rawurlencode, etc. ne servent à rien et qu'on ne peut pas s'en servir, alors qu'elles existent précisément pour ce genre de problèmes.

PS : @ trotters

tu as raison pour la rapidité, mais ce n'est pas essentiel dans mon cas, et je préfère optimiser après coup, sinon c'est difficile à modifier et je m'arrache les cheveux pour relire ce meli-melo de points, de guillemets et d'apostrophes.
MorganStern est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2007, 13h00   #8
Membre confirmé
 
Inscription : mai 2006
Messages : 196
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 196
Points : 278
Points : 278
Non non ce sont bien des serveurs WINS dont je parle les DNS ont une autre fonction. Mais c'est vrai que la j'essaye une addresse avec des accents et sa marche sur IE mais pas sous FireFox chez moi oO et en fait il y aurai apparement un plug-in pour gérer les accents sur les navigateurs, essaye d'aller sur www.télécharger.com , le site m'a proposer d'installer un plug in pour les accents sous IE et mozilla lui change directement l'adresse et supprime les accents :o

Sinon en fait oué j'ai dû m'emméler les pinceaux car les serveurs WINS sont comme les DNS mais ils sont utilisés lorsque tu utilise un protocol NetBios , en gros on s'en fou la xD , pour l'info wiki : http://fr.wikipedia.org/wiki/WINS

Donc essaye de chercher des plug-ins pour les accents car certains navigateurs je pense ne prennent pas les accents par défaut.
meliandah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2007, 16h51   #9
Nouveau Membre du Club
 
Inscription : avril 2006
Messages : 70
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 70
Points : 31
Points : 31
Citation:
Envoyé par meliandah
en fait il y aurai apparement un plug-in pour gérer les accents sur les navigateurs, essaye d'aller sur www.télécharger.com , le site m'a proposer d'installer un plug in pour les accents sous IE et mozilla lui change directement l'adresse et supprime les accents :o
C'est quoi ce site pourri, où on demande ton numéro de carte bancaire et ton email pour télécharger des logiciels gratuits... ?



Sinon, j'ai trouvé la solution à mon problème, sans plug-in...

C'est assez étrange et ça me suggère que le MIME est géré n'importe comment, mais qu'importe...

La solution consiste à ne crypter qu'une partie de l'url, celle du nom des fichiers, avec rawurlencode (ça ne marche pas avec urlencode). ça fonctionne avec Firefox (mais ce n'est pas une surprise), avec IE et Opéra. Si quelqu'un veut essayer avec Konqueror... qu'il ne se prive pas. J'ai la flemme de rebooter ma machine...
MorganStern 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 11h50.


 
 
 
 
Partenaires

Hébergement Web