[PHP] Passer les caractères ' et & en parametre ?

Passer les caractères ' et & en parametre ? [PHP] - PHP - Programmation

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

Reply

Marsh Posté le 03-02-2003 à 23:59:32   

Reply

Marsh Posté le 04-02-2003 à 00:07:01    

pour le ' , on évite normalement. Pour le &, c'est & a m p; (sans les espaces).

Reply

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

Reply

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 ?

Reply

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.

Reply

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

Reply

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. ;)

Reply

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)

Reply

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.  :whistle:

Reply

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

Reply

Marsh Posté le 04-02-2003 à 00:43:52   

Reply

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 ?

Reply

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 ...

Reply

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...

Reply

Marsh Posté le 04-02-2003 à 01:52:43    

Bab a écrit :

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 ...


 
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.

Reply

Marsh Posté le 04-02-2003 à 09:30:10    

%26 pour le &
%27 pour le '
 
démarrer -> exécuter -> charmap pour les codes :o

Reply

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

Reply

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).
 
le temps de traitement est mon ennemi car c'est pour une interface web


 
Bof, je fais ça tout le temps, et ça change pas grand chose. De toutes manières, c'est la seule vraie solution.

Reply

Marsh Posté le 04-02-2003 à 14:20:04    

Bab a écrit :


pour résumer, je lis la liste des fichiers d'un repertoire


 
et tu dis que le temps d'exécution est ton ennemei ??? :lol:
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.

Reply

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.

Reply

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 :
  1. if (!file_exists('./mp3/'.$HTTP_GET_VARS['dirname'].'/index.html')){
  2.   genere_liste($HTTP_GET_VARS['dirname']); //écrit le listing dans le fichier index.html du rep
  3. }
  4. echo getFileList($HTTP_GET_VARS['dirname']); //affiche le contenu du fichier index.html du répertoire $dirname


 
!!! ç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


Message édité par ethernal le 04-02-2003 à 15:06:07
Reply

Marsh Posté le 04-02-2003 à 15:06:47    

je te remercie, je vais regarder ça en détail

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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