防止打印出escape_string斜杠

时间:2013-08-27 23:17:53

标签: php database mysqli server-side

我写了一个博客系统,除了一件小事以外,效果很好。我正在使用mysqli::real_escape_string来防止系统暴露于SQL注入。但是,如果有人在其中写了带有“或”的注释,则这些注释将显示为\“或\”,这不完全是用户友好的。

有没有办法防止这些被写入,或者在用PHP回应之前删除它们?

1 个答案:

答案 0 :(得分:0)

在你的情况下,逃逸发生两次(可能是因为启用了设置“magic_quotes_gpc = On”)

示例:

Is your name O'reilly?

当此参数传输浏览器(客户端) - > php(web-server)with magic_quotes_gpc = on

Is your name O\'reilly?

然后你的代码mysqli_real_escape_string

Is your name O\\\'reilly?

结果存储在表格中:

Is your name O\'reilly?

Сonclusion:

过时的设置«magic_quotes_gpc»要禁用。

请注意。 在这种情况下,当sql查询更便于使用«prepared statements»时,为防止SQL注入,参数不需要转义。