验证用户输入或

时间:2010-04-12 15:46:30

标签: php unicode filter validation detect

我们让用户从单个文本输入中搜索数据库,而我在过滤一些用户提供的字符串方面遇到了困难。

例如,如果用户提交:

��������� lcd SONY

(注意?)我需要取消搜索。

我将上面字符串的base64编码版本包含起来,以便轻松运行:

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

我之前忽略了这些输入但是现在(我不知道为什么)只是意识到mysql数据库查询几乎永远执行所以现在它处于高优先级。

另一个强调我们使用utf-8和mb_detect_encoding的例子没有多大帮助:

print(base64_decode("zqDOm8+Fzr3PhM63z4HOuc6/IM+Bzr/Phc+HzyU="));
ΠΛυντηριο ρουχ�%

所以:

  • 如何检测/过滤这些输入?
  • 如何生成此输入?

2 个答案:

答案 0 :(得分:1)

你不应该这样做,虽然如果你真的想要过滤(我不推荐),检查字母数字以及“ - 。;”等等。

您可以使用其中一些功能来帮助您完成过滤过程。

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

答案 1 :(得分:0)

如果在创建与mysql的连接后执行这些查询,它应该处理utf-8输入并且结果很好而不会吐出来的。

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

(假设数据库设置为utf-8,你不介意不过滤它们,如果它们没有变成?)

(也假设您正在使用mysql,其他dbms可能具有类似的功能)