【发布时间】:2017-10-28 02:55:57
【问题描述】:
我正在编写客户端和服务器端代码。用户在浏览器中输入数据,发送到服务器上我的 PHP 代码。
我在$_GET[] 上使用filter_input_array,在“名称”字段中使用FILTER_SANITIZE_STRING。
O'Reilly 变为 O'Reilly,并存储在数据库中。
当然,下次客户端获取数据并在浏览器中显示时,用户会抱怨。
当我SELECT 使用 PDO 来自 MySql 数据库的数据时,有什么方法可以“取消清理”?
【问题讨论】:
-
正确的做法是将数据正确地存储在数据库中,而不是用错误的方式编码。可能使用
FILTER_FLAG_NO_ENCODE_QUOTES会有所帮助 -
如果您使用准备好的语句并绑定值,则首先不需要进行清理。
-
@SamiKuhmonen 有效,请随时将其发布为答案,我会接受。 Nigel,当我查看代码时,我发现 both 正在清理输入 和 绑定 d/b查询参数!也许我需要重新思考和重构?
-
如果您可以“试一试”并注释掉您的 filter_input_array,看看它是如何工作的 - 正确理解这些事情如何影响您的网站及其使用的数据总是有用的。
-
你是对的,当然。而且,由于我绑定了我的查询参数,所以我不需要清理(它只是我用来验证 URL 中是否存在强制
$_GET[]参数的一部分。我不知道清理是如何进入的)
标签: php mysql pdo sanitization