IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[PHP-JS] Comment passer en GET un argument qui commence par "+" ?


Sujet :

Langage PHP

  1. #1
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut [PHP-JS] Comment passer en GET un argument qui commence par "+" ?
    Bonjour

    Dans mon application, j'ai un formulaire où l'utilisateur entre un nom de client. Je récupère ensuite ce nom de client dans la variable $_GET['sel']. Seulement, certains clients sont spéciaux et ont un nom qui commence par le caractère "+".
    Conséquence, mon url ressemble à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://monsite/index.php?sel=+toto
    Problème : php interprète cette url comme possédant 2 variables "sel" et "toto", vides !
    J'ai essayé de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://cb55676/trader/index.php?sel='+toto'
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://cb55676/trader/index.php?sel="+toto"
    , ca ne résout pas le problème.

    Je pensais convertir le "+" en son code html, mais ca n'est pas très pratique. Quelqu'un a-t-il une autre idée ?

    Merci

  2. #2
    Membre expérimenté
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Points : 1 561
    Points
    1 561
    Par défaut
    Interdit tout simplement les noms de clients contenant des caractères démoniaques et le tour est joué !

    Faut pas se laisser marcher dessus par les clients non plus
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  3. #3
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut
    Si je le pouvais, tu penses bien que ce serait déjà le cas !

  4. #4
    Membre expérimenté
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Points : 1 561
    Points
    1 561
    Par défaut
    Bon ben reviens sur ta 1ère idée de convertir en html c'est pas bien compliqué, un coup de htmlentities sur ton get et le tour est joué
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Turquie

    Informations forums :
    Inscription : Avril 2005
    Messages : 614
    Points : 502
    Points
    502
    Par défaut
    tu ne peux pas utiliser le $_POST ?

  6. #6
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Points : 174
    Points
    174
    Par défaut
    Il y a des fonctions faites pour cela:
    Url Encode

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut
    Qui crée l'url ? Le client ou le serveur ? Si c'est le serveur, effectivement la fonction proposée au dessus sera très utile. Si c'est le client, les formulaires sont normalement automatiquement encodés pour changer le + en sa "spécialisation", si l'url est crée par javascript, il y a également des fonctions javascript uri encode, uri encode component, etc. dont c'est exactement le rôle.

    Il ne faut pas utiliser d'entités html dans l'url. L'entité de plus dans l'url n'aurait aucun sens. Dans l'url on encode les signes réservés ( : / + & = ? etc.) qui ont un sens dans l'url par un équivalent utilisant leur code ascii : %26 pour un & parce que 0x26 (38 en décimal) est le code ASCII du caractère &.

  8. #8
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut
    Merci à tous de vos réponses. Pour l'instant, je n'arrive pas à m'en sortir, mais je ne désespère pas.
    Si le coeur vous en dit, voici le bout de code incriminé : il s'agit de php qui génère un lien javascript. Le lien n'est curieusement pas affecté par la fonction urlencode.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<a href="javascript:location.href(\'index.php?sel='.$data["ABREGE"].'\')"/>'.$data["GESTION"].'</a>';
    J'ai essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<a href="javascript:location.href(\'index.php?sel='.urlencode($data["ABREGE"]).'\')"/>'.$data["GESTION"].'</a>';
    mais ca ne change rien.
    Par contre, si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo urlencode($data["ABREGE"])
    j'ai bien mon nom de client encodé.

    Je pense que dans mon cas, l'URL est créé par le serveur, mais je me demande si en fait il n'est pas considéré comme créé par le javascript.


    PS : URL est bien un mot masculin )

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut
    La deuxième ligne semble pourtant bonne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<a href="javascript:location.href(\'index.php?sel='.urlencode($data["ABREGE"]).'\')"/>'.$data["GESTION"].'</a>';
    La fonction urlencode($data["ABREGE"]) est bien appellée durant l'exécution du script. Si vous n'en êtes pas persuadé, regardez à partir de votre navigateur, la source html de la page produite.

    Pour info, et bien voir la différence, la version javascript utiliserait encodeURIComponent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<a href="javascript:location.href(\'index.php?sel=\' + encodeURIComponent(\'' .  $data["ABREGE"]) . '\'));" />' . $data["GESTION"] . '</a>';
    qui n'a pas grand chose à envier à l'autre.

  10. #10
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    PS : URL est bien un mot masculin


    une adresse URL => une URL par extension
    Uniform Resource Locator => une ressource, une location
    Au féminin dans les docs


    Mais bon ça fait pas avancer le schmilblick.
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  11. #11
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut
    Je viens d'essayer la version javascript, elle fonctionne parfaitement.
    La raison est probablement que le lien s'écrit javascript:location.href() et que le lien html est généré à la volée.
    Merci encore

  12. #12
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut
    [QUOTE=JWhite
    une adresse URL => une URL par extension
    Uniform Resource Locator => une ressource, une location
    Au féminin dans les docs


    Mais bon ça fait pas avancer le schmilblick. [/QUOTE]
    Oui, c'est sur, et c'est sans grand intérêt. C'est juste que c'est la première chose qu'on m'avait apprise lors de mes *très* lointains cours de "technologies du web"

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut
    Euh, je ne vois pas le rapport... Ni pourquoi la version php ne marche pas.
    J'sais même pas comment ça peut marcher d'ailleurs, normalement c'est

    et non

    :/

Discussions similaires

  1. [XL-2000] Comment faire pour distinguer les cellules qui commencent par
    Par Avinetor dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/06/2009, 14h36
  2. comment passer un string en argument
    Par maxim2007 dans le forum C++
    Réponses: 2
    Dernier message: 23/11/2007, 02h08
  3. Comment passer des valeurs en arguments
    Par remi77 dans le forum Excel
    Réponses: 6
    Dernier message: 13/03/2007, 11h54
  4. [PHP-JS] Comment passer une variable PHP en vbscript
    Par minette dans le forum Langage
    Réponses: 1
    Dernier message: 10/08/2006, 23h54
  5. Comment passer une fonction en argument
    Par Pades75 dans le forum Langage
    Réponses: 4
    Dernier message: 16/02/2006, 10h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo