Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/11/2010, 12h12   #1
Membre éprouvé
 
Avatar de ben.IT
 
Homme Benoît
Inscription : janvier 2009
Messages : 390
Détails du profil
Informations personnelles :
Nom : Homme Benoît
Âge : 24
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : janvier 2009
Messages : 390
Points : 437
Points : 437
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 :
commandeUnix -- -arg 'XX="YY"' -printf '>%mon_format'
voici la chaine échappée :
Code :
commandeUnix -- -arg \'XX=\"YY\"\' -printf \'>%mon_format\'
et voici ce que je récupère finalement dans une page ultérieure :
Code :
commandeUnix -- -arg \'XX=\

voici le code php :
Code :
print "<input type=\"hidden\" name=\"QUERY\" value=\"$QUERY\">\n";
voici le source de la page générée :
Code :
<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
__________________
Meet the free software gang
ben.IT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 12h18   #2
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 794
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 794
Points : 35 788
Points : 35 788
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 !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 30/11/2010, 14h14   #3
Rédacteur/Modérateur
 
Avatar de Thes32
 
Homme
Développeur Web
Inscription : décembre 2006
Messages : 2 335
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2006
Messages : 2 335
Points : 3 774
Points : 3 774
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 :
1
2
3
 
$query = htmlspecialchars( "commandeUnix -- -arg 'XX=\"YY\"' -printf '>%mon_format'" );
echo "<input type=\"hidden\" name=\"QUERY\" value=\"$query\">\n";
__________________
Développeur | Zend Certified Engineer

Étapes Pour mieux se servir du forum:
1. Commencez par lire les cours et tutoriels ;
2. Faites une recherche;
3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

Nix>_Rien n'est plus pratique que la théorie
Thes32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 17h23   #4
Membre éprouvé
 
Avatar de ben.IT
 
Homme Benoît
Inscription : janvier 2009
Messages : 390
Détails du profil
Informations personnelles :
Nom : Homme Benoît
Âge : 24
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : janvier 2009
Messages : 390
Points : 437
Points : 437
salut et merci de ta réponse,
Code :
1
2
3
 
$QUERY=stripslashes($QUERY) ; //enleve les antislash d échappement
$QUERY=urlencode($QUERY) ; //code la requete pour proteger les caract speciaux
puis
Code :
1
2
 
$QUERY=urldecode($QUERY);
et ma chaine est transmise, intacte !
merci à toi Bovino
je ne connaissais pas cette fonction,
à bientôt,
benilto
__________________
Meet the free software gang
ben.IT est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h43.


 
 
 
 
Partenaires

Hébergement Web