Forum Programmation.php nmogosearch, frontend php et accent dans les url !

Posté par  .
Étiquettes : aucune
0
22
avr.
2005
bonjour à tous,

j'ai un serveur de fichier samba, avec environ 600000 fichiers (*.doc, *.ppt, *.xls, *.pdf) dessus.

je me suis dit que mes users ayant étés gentils ces dernier temps, j'allais leurs offrir un moteur de recherche pour retrouver plus facilement une info dans leurs document ms-office

ce que j'ai fait, mnogosearch marche bien, il indexe bien le contenu des documents, etc...

le problème est dans le frontend php :

si je fait une recherche sur "toto", il me donne un lien vers le fichier qui contient le terme "toto". le lien est du type :
file://z:\mon_dossier\mon_fichier_toto.doc
l'utilisateur clique dessus et télécharge son fichier, tout vas bien, la vie est belle.

MAIS si le nom de fichier qui contient le terme "toto" à des caractères accentués, des espaces ou des parenthèses du genre :
"mon fichier toto à viré (au plus vite).doc", le lien devient :
file://z:\mon_dossier\mon fichier toto %3F%3 vir%3F%3F (au plus vite).doc
ce qui fait que quand l'utilisateur clique sur le lien, il à un message d'erreur du navigateur....

j'ai modifié le frontend php avec des urldecode, htmlentities, utf8_encode, rawurldecode, urlencode, etc..
enfin, tous les truc qu'il y à dans le guide officiel du php, et rien n'y fait !
le frontend renvoie une url avec des % qui fait que l'utilisateur ne peut télécharger les fichiers avec des caractères accentués.

bon, normalement, il ne doit pas y avoir de caractère accentués dans les url, mais y-a-t-il un moyen d'outrepasser la norme ?

mon architecture :
le serveur de fichiers est sous linux avec samba+mnogosearch+LAMP pour le frontend php
les utilisateurs sont sous winxp+IE/Firefox
il partagent leurs fichiers via le lecteur z:\

merci pour votre aide !
  • # Pas d'encodage pour les liens

    Posté par  . Évalué à 1.

    Ça ne vient pas des %20 manquant pour remplacer les espaces par hazard?
    file://z:\mon_dossier\mon fichier toto %3F%3 vir%3F%3F (au plus vite).doc

    Fait un petit test, tu as bien un echo $ta_variable que tu embriques de url_decode encode etc..., fait donc un echo tout simple, puis affiche le résultat dans un navigateur puis affiche le code source (CTRL+U dans Firefox). Regarde dans la sortie HTML si ton lien est comme tu le souhaite.

    D'une autre manière, urlencode (il me semble fortement) qu'il ne sert uniquement à faire passer des variables à $_GET et non pas à encoder une URL, car en fait c'est le navigateur qui doit faire automatiquement la conversion des liens.

    Je vais faire un p'tit test ...

    < a href="projet 2I/éééindex_html_m3656259d.gif">lien vers un fichier avec un espace< /a>
    j'ai volontairement ajouté un espace pour qu'il ne soit pas interprété par le parseur

    ben oui, c passer sans soucis, donc écrit tes liens sans encodages.

    J'espère que tu vas trouver
    ++

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n’en sommes pas responsables.