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 04/04/2008, 12h48   #1
Membre chevronné
 
Avatar de pop_up
 
Inscription : avril 2006
Messages : 833
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : avril 2006
Messages : 833
Points : 690
Points : 690
Par défaut Les caractères accentués passés par leur entité sont décodés

Bonjour,

J'ai fait un simple formulaire en post.
je passe une variable en post de ce style :
Code :
1
2
 
<input type="hidden" name="test" id="test" value="<p>&eacute;</p>" />
le truc c'est que quand je recupere ma variable, je recupere
l'accent est décodé tout seul.
Si je passe le type en "texte" ça marche bien pourtant.

De plus je ne peut pas faire de htmlentities car je ne veut pas que mes "<" deviennent des "&lt;"

auriez vous une solution ?

merci
pop_up est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2008, 15h07   #2
Rédacteur/Modérateur
 
Avatar de marcha
 
Homme Marc Chappuis
Développeur Web
Inscription : décembre 2003
Messages : 1 535
Détails du profil
Informations personnelles :
Nom : Homme Marc Chappuis
Âge : 41
Localisation : Suisse

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2003
Messages : 1 535
Points : 2 206
Points : 2 206
Salut,

Ton code html sans encoder les < > ne passe pas la validation au w3c.
Il faut encoder la valeur du paramètre.

avec htmlspecialchars pour les < > et le & au minumum

Mais attention aux guillemets ! l'idéal c'est quand même htmlentities
avec l'option ENT_QUOTES, ainsi:

Code :
1
2
 
<input type="hidden" name="test" id="test" value="<?php echo htmlentities('<p>é</p>', ENT_QUOTES); ?>" />
ou ainsi si tu tiens à ton &eacute; non transformé:

Code :
1
2
 
<input type="hidden" name="test" id="test" value="<?php echo htmlentities('<p>&eacute;</p>', ENT_QUOTES); ?>" />
__________________
Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !
marcha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2008, 21h48   #3
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

Il faut bien distinguer le code HTML source et ce qui est interprété par le navigateur. Ce que tu mets dans value="" doit être encodé en HTML par htmlspecialchars(), mais si tu veux afficher le code HTML alors tu dois l'encoder deux fois :
Code :
value="<?php echo htmlspecialchars('<p>'.htmlspecialchars($string, ENT_QUOTES).'</p>', ENT_QUOTES); ?>"
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2008, 13h38   #4
Membre chevronné
 
Avatar de pop_up
 
Inscription : avril 2006
Messages : 833
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : avril 2006
Messages : 833
Points : 690
Points : 690
merci a vous.
pop_up 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 23h28.


 
 
 
 
Partenaires

Hébergement Web