[resolu]préremplir une case de FORMulaire : probleme avec guillemets

préremplir une case de FORMulaire : probleme avec guillemets [resolu] - PHP - Programmation

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
Reply

Marsh Posté le 14-11-2008 à 13:27:53   

Reply

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 [:petrus dei]
 
Le " sert pour les valeurs d'attributs, donc forcément on ne peut pas en imbriqué, quelque chose du style :

Code :
  1. <machin truc="bidule"super" />


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 :
  1. <machin "bidule&quot;super" />


 
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 :
  1. echo '<input maxlenth="150" size="80" value="', htmlspecialchars($adresse['nom_de_la_rue']), '" name="adr1" />';


 
Aussi y'a pas d'id sur ton input, comment est-il associé à son label ?

Reply

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.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed