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 :

html transmettre variable avec caractères spéciaux dans un hidden


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de ben.IT
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 431
    Par défaut html transmettre variable avec caractères spéciaux dans un hidden
    Salut à tous,
    je suis en train de faire une interface qui permet de lancer des scripts shell sur un serveur.
    Pour cela, j'ai besoin de saisir des commandes unix dans un formulaire. Ces commandes contiennent des caractères spéciaux : single quote ', double quotes ", et tout ce qu'une ligne de commande peut contenir comme caractère spéciaux ...

    Je récupère donc le contenu du formulaire et le stock dans un champs hidden.

    j'ai utilisé la fonction php addslashes mais lorsque je récupère ma variable et que je regarde le source du formulaire (firefox indique certain caractères échappés en rouge), je 'aperçois qu'il y un problème ...

    Voici la chaine telle que je la saisie et telle que je souhaite la transmettre au fil des pages :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    commandeUnix -- -arg 'XX="YY"' -printf '>%mon_format'
    voici la chaine échappée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    commandeUnix -- -arg \'XX=\"YY\"\' -printf \'>%mon_format\'
    et voici ce que je récupère finalement dans une page ultérieure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    commandeUnix -- -arg \'XX=\

    voici le code php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print "<input type=\"hidden\" name=\"QUERY\" value=\"$QUERY\">\n";
    voici le source de la page générée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="QUERY" value="commandeUnix -- -arg \'XX=\"YY\"\' -printf \'>%mon_format\' ">
    Ma question est donc générale, comment faire pour transmettre une chaine avec des caractères spéciaux dans un champs hidden ?

    Après avoir cherché, j'ai essayé la fonction php addslashes mais ce n'est visiblement pas satisfaisant...

    merci d'avance,
    ben

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    addslashes n'a effectivement rien à voir avec ce que tu souhaites
    Ce serait plutôt urlencode() qu'il faut utiliser
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre Expert
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Par défaut
    Salut,

    il faut que tu fasses un htmlspecialchars, tu décoderas ensuite. Sinon le html aura du mal à accepter les caractères " et > dans la valeur de l'attribut value.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $query = htmlspecialchars( "commandeUnix -- -arg 'XX=\"YY\"' -printf '>%mon_format'" );
    echo "<input type=\"hidden\" name=\"QUERY\" value=\"$query\">\n";

  4. #4
    Membre éclairé Avatar de ben.IT
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 431
    Par défaut
    salut et merci de ta réponse,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $QUERY=stripslashes($QUERY) ; //enleve les antislash d échappement
    $QUERY=urlencode($QUERY) ; //code la requete pour proteger les caract speciaux
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $QUERY=urldecode($QUERY);
    et ma chaine est transmise, intacte !
    merci à toi Bovino
    je ne connaissais pas cette fonction,
    à bientôt,
    benilto

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec caractères spéciaux dans STRING
    Par sibama dans le forum VB.NET
    Réponses: 2
    Dernier message: 24/04/2012, 10h14
  2. [AC-2003] Pb avec caractères spéciaux dans fichier
    Par Jean-Luc80 dans le forum VBA Access
    Réponses: 3
    Dernier message: 14/02/2011, 11h46
  3. Lien dynamique avec caractères spéciaux dans un mailto
    Par sd dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 11/07/2008, 11h41
  4. [RegEx] Caractères spéciaux dans le nom d'une variable
    Par Cartouche dans le forum Langage
    Réponses: 7
    Dernier message: 11/05/2007, 23h51
  5. [SQL] Problème d'affichage de caractère spéciaux dans une variable chaîne
    Par Kryptonaute dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 18/08/2006, 08h40

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