J'aimerais recueillir vos avis sur la manière dont je traite et exploite les données de ma base de données.
Actuellement, lorsque l'utilisateur soumet le formulaire HTML, les données sont envoyées au serveur PHP via Ajax. Du côté PHP, je récupère ces données dans la variable $_POST, les passe à la fonction htmlspecialchars pour chaque entrée, puis les enregistre dans la base de données MySQL via PDO.
En ce qui concerne l'affichage, je récupère également les données en Ajax en utilisant JSON, puis les affiche en générant du HTML dans la page. Cependant, j'ai rencontré un problème lors de la modification des données déjà enregistrées, notamment avec les caractères spéciaux tels que & en &, " en ", ' en ', < en <, > en >. J'ai dû utiliser une fonction JavaScript pour reconvertir ces caractères, mais je trouve cela peu élégant.
Si c'est pour retourner les entrées décodées et regénérer le html, pourquoi pas
htmlspecialchars_decode()
Néanmoins j'avoue que je ne vois pas vraiment l'intérêt parce que la sortie sera comme l'entrée.
Perso, je rentrerais le tout dans la bdd avec une requête préparée et je ferais la sortie avec le htmlspecialchars (mais pas de html interprétable).
Si le but ultime c'est de ne pas avoir de html dans la bdd et de le récupérer à la fin en gardant la main sur les balises, pourquoi pas qqch comme le bbcode ?
> les passe à la fonction htmlspecialchars pour chaque entrée
Comme dit ci-dessus, c'est ce que tu ne devrais absolument pas faire, htmlspecialchars c'est à l'affichage/echo, ça n'a rien à faire en entrée d'une bdd/sur les requêtes ! Ca fait des années qu'on le dit entre autres pour éviter le problème que tu rencontres :
gb-net.fr
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
My website : Mon serveur discord, Se demerder tout seul, Faille XSS et SQL