6 votes

Validation de la saisie de l'utilisateur ou ���������

Nous laissons les utilisateurs effectuer des recherches dans une base de données à partir d'une seule entrée de texte et j'ai des difficultés à filtrer certaines chaînes fournies par les utilisateurs.

Par exemple, si l'utilisateur soumet :

 lcd SONY

(Notez les ?) Je dois annuler la recherche.

J'ai inclus la version codée en base64 de la chaîne ci-dessus enveloppée de façon à ce qu'elle soit facile à exécuter :

print(base64_decode("1MfLxc/RwdPHIGxjZCBTT05Z"));

J'ai ignoré de telles entrées avant mais maintenant (je ne sais pas pourquoi) je viens de réaliser que la requête de la base de données mysql prend presque une éternité à s'exécuter, donc c'est maintenant une priorité élevée.

Un autre exemple pour souligner que nous utilisons utf-8 et que mb_detect_encoding ne nous aide pas beaucoup :

print(base64_decode("zqDOm8+Fzr3PhM63z4HOuc6/IM+Bzr/Phc+HzyU="));
 %

Donc :

  • comment puis-je détecter/filtrer ces entrées ?
  • comment ces données sont-elles générées ?

1voto

AjayP Points 188

Vous ne devriez pas obtenir cela, mais si vous voulez vraiment filtrer (ce que je ne recommande pas), vérifiez les caractères alphanumériques ainsi que "-. ;", etc.

Vous pouvez utiliser certaines de ces fonctions pour vous aider dans le processus de filtrage.

http://www.php.net/manual/en/function.ctype-alnum.php

0voto

Jconnop Points 1

Si vous exécutez ces requêtes après avoir créé la connexion à mysql, le système devrait traiter les entrées et les résultats en utf-8 sans cracher des ?.

mysql_query("SET character_set_client=utf8", $mysqlConn);
mysql_query("SET character_set_connection=utf8", $mysqlConn);
mysql_query("SET character_set_results=utf8", $mysqlConn);

(en supposant que la base de données est configurée en utf-8 et que cela ne vous dérange pas de ne pas les filtrer s'ils ne se transforment pas en ?).

(en supposant également que vous utilisez mysql, d'autres dbms ont probablement des fonctions similaires)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X