Salut,
1) À mon avis, pour afficher des guillemets ou des apostrophes dans l'attribut d'une balise, une méthode propre et efficace serait de convertir ces caractères ' et " en code HTML.
Pour cela, il y a la fonction htmlspecialchars(), dont les arguments à fournir sont ta chaîne de caractères et le paramètre ENT_QUOTES.
Ainsi, le code :
echo '<input type="text" value=" '.$titre.' ">';
devient :
echo '<input type="text" value="'.htmlspecialchars($titre, ENT_QUOTES).'">';
2) Je ne vois vraiment pas l'utilité de la fonction stripslashes dans ton cas, vu que la base de données est censée contenir le texte tel qu'il a été saisi par l'utilisateur.
Si tu dois quand même utiliser la fonction stripslashes pour afficher correctement les ' et ", c'est sûrement que tu as échappé les données à deux reprises avant enregistrement !
Ce "double échappement" arrive fréquemment avec l'option magic_quotes_gpc activée dans ta configuration PHP, car ça permet d'ajouter automatiquement des antislashs dans les données issues des variables GET, POST et COOKIE.
Pour reprendre ton exemple, si l'utilisateur tape :
les "geeks" sont de retour
Avec les magic_quotes_gpc activées, ça devient automatiquement :
les \"geeks\" sont de retour
Si en plus, tu rajoutes la fonction addslashes ou mysql_real_escape_string, ça devient :
les \\\"geeks\\\" sont de retour
(Les anti slashs et et les " sont de nouveau échappés !)
Au final, c'est
les \"geeks\" sont de retour
qui sera enregistré dans ta base de données, ce qui te force à appliquer un stripslashes pour afficher correctement le texte issu de ta BDD.
Évidemment, il FAUT ABSOLUMENT utiliser addslashes() ou mysql_real_escape_string() si l'option magic_quotes_gpc n'est pas activée (de toute façon je n'aime pas cette option... ça ne protège pas automatiquement de toutes les failles potentielles et ça donne un faux sentiment de sécurité aux débutants).
Bon je sais c'est pas trop en rapport avec ton problème initial, mais je vois souvent ce genre de truc alors je tenais à faire la remarque
Partager