un "%20" dans une variable dans une URL

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : un "%20" dans une variable dans une URL

par sasg » 11 juil. 2006, 14:32

Merci a vous 3!

J'ai pris la solution urlencode()!

Un post en plus de resolu! :D

par ouckileou » 11 juil. 2006, 13:43

urlencode()
Note : faites bien attention aux variables qui ressemblent à des entités HTML, comme &amp, &copy et &pound, qui sont analysées par le client web et remplacées par leur valeur. C'est un vrai problème qui a été montré par le W3C depuis longtemps. La référence est ici : http://www.w3.org/TR/html4/appendix/notes.html#h-B.2.2. PHP supporte le remplacement de séparateur d'arguments par un point-virgule, comme recommandé par le W3C, grâce à la directive arg_separator du fichier php.ini. Malheureusement, la plupart des clients web n'envoient pas leurs données de formulaire avec des points-virgules. Une solution plus portable est d'utiliser & à la place de & comme séparateur. Vous n'avez alors pas à changer la directive arg_separator. Laissez-la à &, mais encodez vos URL en utilisant htmlentities() ou htmlspecialchars().

par sasg » 11 juil. 2006, 13:10

voila ce que j'ai fait:

- la variable a passe par l'url est "jo & evelien"
- dans l'url, apres l'avoir passe dans htmlspecialchars donne "jo%20&%20evelien"
- je recupere grace au $_GET

ce qui me donne dans un echo "jo"

par Ryle » 11 juil. 2006, 12:52

Sinon au pire tu peux remplacer le "&" par "%26" ... mais doit y avoir des moyen plus propre de faire ça via des fonction php (encoder en ut8 par exemple)

par zeus » 11 juil. 2006, 12:43

Tout dépend de la configuration de ton serveur, il est possible qu'il soit correctement encodé

Essaye simplement de passer par url_decode() ce que tu récupères de ton GET

par sasg » 11 juil. 2006, 12:38

oui mais dans "&" il y a aussi "&" donc ca pose encore le meme probleme.

user=jo%20&%20evelien
devient user=jo%20&%20evelien

par Ryle » 11 juil. 2006, 12:27

Ah, ça par contre c'est normal : le "&" est utilisé comme séparateur de variables dans l'url :)

Tu dois pouvoir le remplacer par "&" pour qu'il ne soit pas considéré comme tel, sinon utilises les fonctions htmlentities() ou htmlspecialchars() pour préparer ta chaine avant de la passer dans l'url :)

par sasg » 11 juil. 2006, 12:00

excuse moi c'est pas le "%20" qui pose probleme c'est le "&" dans la variable

user=jo%20&%20evelien

et le print donne : Array ( [user] => jo [evelien] => )

donc comment resoudre le probleme avec le &?

par Ryle » 11 juil. 2006, 11:51

C'est bizare ton histoire... le remplacement des espaces par %20 est l'encodage normal dans l'url... php gere ça très bien en théorie... quand tu fais un print_r($_GET) ça a quelle tête ?

Je ne vois pas trop ce qui pourrait empêcher $_GET['var'] de contenir ta valeur (ou alors tu exécutes quelque chose sur le GET avant de la récupérer ?)

un "%20" dans une variable dans une URL

par sasg » 11 juil. 2006, 11:45

Bonjour,

je dois recuperer une variable dans une url ($_GET), mais cette variable de cette url s'affiche avec "%20" au lieu d'espace.

Donc quand je veux recuperer cette variable, tout ce qu'il ya apres "%20" n'est pas pris en compte.

Code : Tout sélectionner

ex: var= 'jo le lapin' dans l'url ca donne : ....?var=jo%20le%20lapin je recupere que "jo" et pas le reste!
Comment puis faire pour recuperer la totalité de ma variable?

Merci pour toute l'aide que vous pouvez m'apporter! :D