par
Ryle » 28 janv. 2021, 14:03
Hello !
Il n'y a généralement d'intérêt à convertir des caractères spéciaux en entités HTML que quand tu veux utiliser cette chaine de caractères dans ton code et qu'elle se retrouve au milieu d'une page en html (notamment pour apparaitre à l'écran). Cela permet d'éviter que son contenu ne viennent altérer le reste de ta page.
Par exemple, si dans un formulaire je rentre - pour une raison ou une autre - la valeur ; "toi" & "moi", tu peux enregistrer cette valeur en base sans problème. Par contre pour la modifier, un simple <input type="text" value="<?php echo $valeur; ?>" /> aura pour effet de générer le code html suivant :
<input type="text" value=""toi" & "moi"" />. L'attribut value de l'input sera vide et le reste sera ignoré, le champ semblera vide à l'écran. Avec htmlspecialchars($valeur), le résultat dans le code serait <input type="text" value=""toi" & "moi"" />. L'attribut value est correctement renseigné, le texte apparait bien dans le champ et est facile à modifier.
Cela permet donc d'éviter des conflits entre ton code et des valeurs que tu ne maîtrises pas (notamment si l'utilisateur commence à inclure des balises html qui sont restituées en l'état dans ton code, c'est la porte ouverte aux injections XSS et autres failles de sécurité).
On pourrait aussi le faire au moment de l'insertion en base, la chaine étant sécurisée une fois pour toute, mais tout va dépendre de l'usage que tu en auras. Si tu veux l'utiliser dans un PDF plutôt qu'une page html, il faudra retransformer la chaine. De même si tu veux pouvoir la modifier (parce qu'éditer un champ contenant "toi" & "moi" est plus compliqué que de modifier un champ avec marqué "toi" & "moi"

)
C'est donc essentiellement à l'exécution / l'affichage que l'on utilise cette fonction
