Modérateur PHPfrance |
10684 Messages
27 juil. 2007, 00:06
Alors pour les apostrophes backslashées, c'est probablement que les magick quotes sont activées sur ton serveur. Cela a pour effet de "protéger" les apostrophes et les guillemets en mettant un antislash devant afin que tu puisses les insérer directement dans ta base de données.
Dans ton cas, comme il n'y a pas d'insertion en base mais une utilisation directe dans un mail, il faut supprimer ces antislash qui ont été ajoutés par le serveur à l'aide de la fonction stripslashes()
Quant à l'utilisation de htmlentities() son but est uniquement de convertir les caractères spéciaux en entités html pour que le navigateur affiche le caractère correspondant sans interpréter le code éventuel. Ca peut effectivement être une forme de sécurité dans la mesure ou quelqu'un de mal intentionné pourrait mettre un code javascript dans ton formulaire, que le navigateur (ou le client de messagerie si le mail est envoyé en html) risquerait d'exécuter à ton insue. Avec cette fonction, son code apparaitrait en toute lettre mais ne serait pas interprété
Dans le même genre tu as strip_tags() qui retire purement et simplement toutes les balises html de la chaine au lieu de te les afficher. Après c'est selon les besoins. Dans ce forum par exemple, si tu met un bout de code html il est transformé avec htmlentities pour être affiché et pas interprété. Ici tu vois mon code en toute lettre et tu n'as pas d'alert box intenpestive qui s'ouvre : <script>alert('coucou');</script>
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...