préremplir une case de FORMulaire : probleme avec guillemets [resolu] - PHP - Programmation
Marsh Posté le 14-11-2008 à 14:06:14
On n'affiche jamais un contenu comme ça, on peut injecter ce qu'on veut. Le problème est pourtant évident, je ne comprend pas sur quoi tu bloque
Le " sert pour les valeurs d'attributs, donc forcément on ne peut pas en imbriqué, quelque chose du style :
Code :
|
Ca risque pas de fonctionner, tu dois le savoir
Donc faut "escaper" les " à l'intérieur (d'ailleurs tout comme les caractères <, > et &, là à mon avis tes scripts sont bourrés de failles de sécurités).
La recommendation HTML4 explicite bien ce qu'il faut faire, à savoir remplacer par l'entité correspondante :
Code :
|
En php, la fonction htmlspecialchars permet de faire ça simplement.
Et pas besoin d'antislashs comme ça, le mieux est d'imbriquer tes chaînes de caractères dans des simple quotes :
Code :
|
Aussi y'a pas d'id sur ton input, comment est-il associé à son label ?
Marsh Posté le 14-11-2008 à 14:12:03
Merci.
J'avais bien compris pourquoi ca ne marchait pas, (le guillemet imbriqué), mais je pensais jusqu'il fallait rajouter un slash devant (d'ou mon test avec addslashes).
Merci pour la fonction htmlspecialchars, que je ne connaissais pas.
Je debute.
Marsh Posté le 14-11-2008 à 13:27:53
Bonjour.
J'ai un script php qui contient un formulaire.
Je souhaite préremplir le formulaire avec des données postales déjà enregistrées.
Tout marche bien, sauf si une des données contient le caractère guillemet "
Par exemple, :
Si la donnée à préremplir est :
Place "Guillaume Tell"
La case de contiendra que :
Place
Voici ce que j'utilise :
echo <input maxlength=\"150\" size=\"80\" value=\"".$adresse['nom_de_la_rue']."\" name=\"ADR1\">";
J'ai essayé addslashes($adresse['nom_de_la_rue'])
et le probleme persiste.
Je ne comprends pas d'où vient mon erreur.
Auriez-vous une idée?
merci.
Message édité par decomposee le 14-11-2008 à 14:12:20