使用PHP消毒撇号

时间:2013-03-13 16:43:13

标签: mysql php str-replace apostrophe

我遇到了撇号问题,导致我设置的评分系统出错。当客户提交包含撇号的纸张时,我会用PHP替换所有撇号:

//Now remove Apostrophes
$essay = str_replace("'","", $essay) ;

问题是虽然这不适用于所有类型的不同撇号。一个例子:

此撇号'与此撇号'不同。我猜测解决方案是将$essay变量更新为标准撇号类型,然后使用str_replace删除所有撇号。

非常感谢任何有关此事的帮助!

4 个答案:

答案 0 :(得分:3)

不要担心尝试对数据进行数据化(即 - 当你试图删除撇号时......)自己进行数据库插入。这是一个已解决的问题。

最佳解决方案是使用PDO数据库连接器插入准备好的查询数据。

根本不需要进行验证/ sanatizing - 您的数据库将在您放置时正确存储所有数据。

如果您仍在使用mysql_*功能,请不要。它们非常陈旧,很快就会被弃用,并且在不经常使用时会在应用程序中容许许多编程错误和漏洞利用。

Here是关于如何使用PDO的体面教程。请记住,如果您使用准备好的陈述正确使用它,您将不必担心打扫卫生!你不需要担心任何类型的撇号! PDO连接器将为您完成!

答案 1 :(得分:0)

你在做什么消毒呢?

提交到数据库? real_escape_string()

将其返回到获取请求的网址? htmlspecialchars()

您进行消毒的具体原因有助于我们找到最佳方法!

答案 2 :(得分:0)

虽然我不同意你的反对正确排版的危险仇杀,但我可以告诉你,对于每种不同类型的撇号式字符,你需要str_replace()。只需要对要删除的每种撇号执行一堆str_replace()

我仍然认为你试图通过避免而不是解决问题来解决问题。撇号完全可以放入mysql数据库,它可能只需要一个不同的字符集或整理。

答案 3 :(得分:0)

如果您正在尝试阻止XSS攻击,请尝试filter_var

$essay=filter_var($essay, FILTER_SANITIZE_STRING);

如果您正在尝试防止sql注入,请查找参数化查询。