par
Sékiltoyai » 07 août 2008, 00:20
En gros après le formulaire tu modifies les données pour qu'elles soient "valides". A savoir que évidemment tu vérifies la validité des champs (bonne formation d'une adresse mail, d'une ip, d'un pseudo). Tu modifies les données au besoin ou demandes modification (selon la politique du site). Par exemple pour un numéro de téléphone tu peux supprimer les espaces, les points, les tirets, si quelqu'un a placé des séparateurs, pour un pseudo, tu peux éventuellement utiliser un trim, etc…
Dans ta base tu as alors les données les plus naturelles possibles, et toutes sous le même format. Si tu dois appliquer un filtre pour nettoyer le numéro de téléphone (pour notre exemple), tu le fais avant, parce que sinon tu te retrouves avec des données totalement hétérogènes, et tu ne peux à aucun moment t'assurer de l'unicité des données, voire faire une recherche correcte.
Le problème est le même lorsque l'on utilise htmlentities. Comment rechercher des caractères accentués dans une table facilement si on a appliqué htmlentities auparavant. htmlentities est clairement une fonction d'affichage puisqu'elle prépare pour un affichage html. Les données ne sont plus valides pour un autre usage. C'est là l'enjeu. Les données doivent être génériques et valables pour n'importe quel usage. Si tu as appliqué une modification avant, tu brides complètement les usages.
Donc tous les urlencode, htmlentities, traduction de bbcode (comment veux tu modifier un post si le bbcode a déjà été traduit en balises html lors du stockage ?), toutes les fonctions d'affichage en bref doivent être réservées à l'affichage.
Voilà, après à chaque fois cela dépend de ce que tu considères être ta donnée brute, mais voilà des exemples pour t'aider à comprendre…
En gros après le formulaire tu modifies les données pour qu'elles soient "valides". A savoir que évidemment tu vérifies la validité des champs (bonne formation d'une adresse mail, d'une ip, d'un pseudo). Tu modifies les données au besoin ou demandes modification (selon la politique du site). Par exemple pour un numéro de téléphone tu peux supprimer les espaces, les points, les tirets, si quelqu'un a placé des séparateurs, pour un pseudo, tu peux éventuellement utiliser un trim, etc…
Dans ta base tu as alors les données les plus naturelles possibles, et toutes sous le même format. Si tu dois appliquer un filtre pour nettoyer le numéro de téléphone (pour notre exemple), tu le fais avant, parce que sinon tu te retrouves avec des données totalement hétérogènes, et tu ne peux à aucun moment t'assurer de l'unicité des données, voire faire une recherche correcte.
Le problème est le même lorsque l'on utilise htmlentities. Comment rechercher des caractères accentués dans une table facilement si on a appliqué htmlentities auparavant. htmlentities est clairement une fonction d'affichage puisqu'elle prépare pour un affichage html. Les données ne sont plus valides pour un autre usage. C'est là l'enjeu. Les données doivent être génériques et valables pour n'importe quel usage. Si tu as appliqué une modification avant, tu brides complètement les usages.
Donc tous les urlencode, htmlentities, traduction de bbcode (comment veux tu modifier un post si le bbcode a déjà été traduit en balises html lors du stockage ?), toutes les fonctions d'affichage en bref doivent être réservées à l'affichage.
Voilà, après à chaque fois cela dépend de ce que tu considères être ta donnée brute, mais voilà des exemples pour t'aider à comprendre…