Passer les caractères ' et & en parametre ? [PHP] - PHP - Programmation
Marsh Posté le 04-02-2003 à 00:07:01
pour le ' , on évite normalement. Pour le &, c'est & a m p; (sans les espaces).
Marsh Posté le 04-02-2003 à 00:09:54
merci.
en fait pour le ' je viens de remarqué quand dans la barre d'adresse ça reste un ' alors qu'une fois dans la page ça devient un \'
donc c'est bon en fait, traitement facile
Marsh Posté le 04-02-2003 à 00:18:04
j'en reviens à mes &, ça change rien avec &
le problème c'est que dès qu'il rencontre un & il interprete ça comme une nouvelle variable ...
il y'a ne solution ?
Marsh Posté le 04-02-2003 à 00:23:39
Arrêtes de faire passer ce genre de truc par l'adresse, c'est pas prévu pour, un point c'est tout. ya le POST pour ça ainsi que les variables de session.
Marsh Posté le 04-02-2003 à 00:25:19
en fait, j'ai pas le choix ...
c'est pour de lecture de fichier qui existent déjà et certains comportent des caractères & dans le nom
Marsh Posté le 04-02-2003 à 00:27:35
On a toujours le choix. Tu peux affecter un simple numéro à chacun de tes fichiers si par exemple il s'agit d'une liste de fichier. Soit en passant par un tableau, soit une BDD en rajoutant un champ, cela dépend de ce que tu cherches à faire. Mais de toutes façon encore une fois, on ne fait pas passer n'importe quoi dans l'adresse.
Marsh Posté le 04-02-2003 à 00:30:21
j'ai bien trouvé une solution mais c'est un peu du bricolage, si quelqu'un a mieux c'est pas de refus ...
(en passant par exemple car_amp au lieu de & et en retransformant & par car_amp une fois les paramètres passés)
Marsh Posté le 04-02-2003 à 00:32:36
Expliques clairement ce que tu veux passer exactement dans ta barre d'adresse ainsi que les circonstances EXACTES dans lesquelles s'opère ton truc.
Marsh Posté le 04-02-2003 à 00:43:52
j'ai par exemple :
http://page.php?var1=toto&var2=ex1&ex2
et je voudrais récupérer dans la page :
$var1 --> toto
$var2 --> ex1&ex2
Marsh Posté le 04-02-2003 à 00:55:56
C'est pas ma question.
Ma question, c'est pourquoi tu veux passer ça en paramètre. Quelles sont les circonstances de ce passage. Tu prends une liste de fichiers ? tu la génères ? tu la récupères via un dir dans un répertoire ?
Marsh Posté le 04-02-2003 à 00:59:19
c'est pour de la lecture de fichiers mp3
pour résumer, je lis la liste des fichiers d'un repertoire puis j'envoi un de ces noms (qui peut donc contenir le caractère &) vers une page qui joue le fichier son
je ne peux pas "m'amuser" à vérifier tous les noms pour remplacer les éventuels caractères & car il y en a quand meme quelques milliers ...
Marsh Posté le 04-02-2003 à 01:09:13
si tu veux encoder une url :
$encoded= urlencode($var);
et
$var= urldecode($encoded); pour la récupérer.
sinon, tu as aussi base64encode/base64decode (mais alors c'est illisible)
j'ai pas lu ce que tu voulais en faire donc...
Marsh Posté le 04-02-2003 à 01:52:43
Bab a écrit : c'est pour de la lecture de fichiers mp3 |
Et bien lorsque tu listes ton répertoire, tu as qu'à faire un tableau avec un numéro en face de chaque fichier. Tu passes ce numéro dans l'URL, puis dans la page suivante, tu récupères le nom du fichier en refaisant un dir et en reprenant le nom en fonction du numéro toujours à l'aide d'un tableau. Je ne vois pas où est le problème. Sinon, t'as aussi la solution d'Ethernal.
Marsh Posté le 04-02-2003 à 09:30:10
%26 pour le &
%27 pour le '
démarrer -> exécuter -> charmap pour les codes
Marsh Posté le 04-02-2003 à 13:58:21
je suis d'accord avec ta solution Hermes le Messager mais le pb c'est que cette solution nécessite bcq plus de temps de traitement (certains repertoires contiennent plus de 400 fichiers).
le temps de traitement est mon ennemi car c'est pour une interface web
Marsh Posté le 04-02-2003 à 14:02:41
Bab a écrit : je suis d'accord avec ta solution Hermes le Messager mais le pb c'est que cette solution nécessite bcq plus de temps de traitement (certains repertoires contiennent plus de 400 fichiers). |
Bof, je fais ça tout le temps, et ça change pas grand chose. De toutes manières, c'est la seule vraie solution.
Marsh Posté le 04-02-2003 à 14:20:04
Bab a écrit : |
et tu dis que le temps d'exécution est ton ennemei ???
si tu le fais à chaque fois que l'on demande la liste des fichiers d'un répertoire, pense à optimiser !
c'est pas un urlencode() qui va bouffer le temps cpu, mais bien le opendir(), ... surtout sur >1000 fichiers !
La solution d'Hermes le Messager avec des ids (et une bd) est bcp plus optimisée.
La solution au top est de génèrer et d'enregistrer la liste des fichiers d'un répertoire une seule fois et de modifier les urls à ce moment là (si c'est une liste statique). Après tu n'as plus qu'à afficher cette page comme une page html.
Marsh Posté le 04-02-2003 à 14:39:55
je n'ai pas dit que urlencode() était plus long que opendir(), je me doute bien ke c'est le contraire.
je prendrais bien la solution de générer une seule fois la liste de fichiers d'un repertoire, c'est vrai que ça serait plus rapide mais ça me parait compliqué à adapter à ce que j'ai.
Marsh Posté le 04-02-2003 à 15:05:29
difficile : oui et non...
le but est évidemment de créer un fichier si le fichier cache n'est pas trouvé dans le répertoire demandé.
liste.php?dir=gogo_dancing
Code :
|
!!! ça peut poser des gros problèmes de sécurité lors de la génération du fichier index.html !!!
tu peux prendre exemple sur http://www.zend.com/zend/tut/tutorial-potter.php
Marsh Posté le 03-02-2003 à 23:59:32
je voudrais savoir comment faire passer les caractère ' et & en paramètre.
par exemple : truc.php?param1=voilà%20l'objet