salut,
coté requête cinephil t'as bien dégrossi le problème...
coté php maintenant...
déjà ne jamais faire confiance à ce que tu récupères dans $_POST ou $_GET
limite au maximum la récupération de texte... et teste toujours avec des regexp si c'est du texte libre si tu peux...
tout ce qui as un équivalent sous forme d'index dans ta bd dois être récupéré sous sa forme numérique (bien plus compact pour la quantité de données passée en GET ou POST et facile à sécuriser contre les attaques par injections)
un entier ce récupère toujours via un:
$v=intval($_GET['truc']);
là tu es sur que quoi qu'il arrive que tu as un entier (0 si pas de valeur numérique dans la variable) donc pas d'injection
pour ta requête de recherche, selon l'organisation de ton formulaire tu vas peut-être devoir découpé celle-ci et faire des unions éventuelles...
tu vas construire ta requete de manière modulaire en fonction des paramètre choisi... tu peux le faire dynamiquement coté mysql avec une procédure stockée (requête préparée, table temporaire et/ou utilisation d'union) ou coté php selon l'isolation php/mysql que tu veux avoir... mais le principe sera le même...
identifier la ou les requêtes qui sont en jeu en fonction des paramètres...
construire la ou les chaines de caractère en fonction puis finaliser la chaine contenant la requête finale avec des unions (coté php pas trop le choix niveau performances) si besoin... là, ta structure de bd est importante et va t'imposer les critères, les requêtes et les performances aussi... d'où cinephil te disant de bien penser ton modèle de données vu qu'il est au centre de tout...
Partager