Page 1 sur 1

Traitement et insertion en BDD de données entrées par l'utilisateur

Posté : 02 août 2016, 11:13
par carte-sd
Bonjour à tous,
Dans tous les tutos que je vois, les données sont insérées en bdd avec une requête préparée en vérifiant que c'est bien une string, puis à chaque fois, dans toute les pages, pour afficher ces données on va faire des transformations (htmlspecialchars(), nl2br(), etc).

Ma question est simple :
Pourquoi ne pas faire tout ça une bonne fois pour toute lors de l'insertion dans la BDD et afficher directement le résultat ? Ça soulagerait énormément le serveur.

Je n'arrive pas à comprendre car il n'y a aucun moyen de modifier ces données à part en ayant accès à la BDD... #-o

Re: Traitement et insertion en BDD de données entrées par l'utilisateur

Posté : 02 août 2016, 11:23
par moogli
salut,

C'est simplement parce que tu ne feras peux être pas que du html avec tout cela et que du coup c'est "con" d'enregistrer un & ou ˆ qui ne sera peux être pas compris par ta cible.
Imagine un export excel, CSV, PDF, ou je ne sais quoi d'autre, il y a de forte chance pour que tes entités html t'emmerde.
Du coup données brutes en base et htmlspecialchars ou htmlentities à l'affichage.

Si c'est le fait de l'utiliser à chaque fois et que tu as peur que cela soit un goulot de perf oriente toi vers une solution de cache afin de ne régénérer les pages que lorsqu'il y a besoin.
Il y a des solutions existantes ou tu peux le faire toi même en enregistrant le ficher sur le disque, a l'appel de la page tu regardes si elle existe en cache, si oui tu envoi le cache au navigateur si non génération de la page et création du fichier de cache.
Il faut quand même penser à la politique de cache (durée, taille, on met quoi en cache etc).

Les serveur, web / proxy et les navigateurs ont déjà des caches tu peux aussi t'appuyer dessus en indiquant correctement l'entête expire ;)

@+

Re: Traitement et insertion en BDD de données entrées par l'utilisateur

Posté : 02 août 2016, 11:23
par Ryle
Bonjour,

Tout dépend de l'usage que tu as de la donnée stockée en base. Si celle-ci ne doit jamais être modifiée et ne doit servir qu'à de l'affichage dans une page html, alors oui, il est plus pertinent et performant de ne faire le traitement qu'une seule fois.

En revanche si tu as un jour besoin d'utiliser le texte inséré dans un document pdf, un fichier excel, ... les balises et entités html vont te polluer (et elles sont plus ch**** à enlever qu'à ajouter :)). De même si tu as besoin d'éditer le texte inséré. C'est plus agréable de le retrouver tel que tu l'as saisi pour l'éditer plutôt que rempli de caractères abscons pour quelqu'un qui n'y connait rien en html.

Edit : humpf.. grillé :)

Re: Traitement et insertion en BDD de données entrées par l'utilisateur

Posté : 02 août 2016, 11:32
par carte-sd
Merci Ryle.
Pour l'édition, pourquoi ne pas utiliser html_entity_decode() ?