3

简单的问题,我想要简单的答案。我正在使用 PDO 准备好的语句来确保我的数据被安全地处理到数据库中。但我很困惑。如果启用了magic_quotes,我是否必须禁用魔术引号或在变量上使用stripslashes。然后让 PDO 做安全工作?

4

2 回答 2

5

如果您使用 PDO 的预处理语句将数据插入数据库,则数据将完全按照您插入的方式进入数据库。 magic_quotes在数据中添加斜线:因此这些将出现在数据库中。这显然不是你想要的。

正如您所说,禁用魔术引号,或者,如有必要,使用stripslashes.

于 2011-11-19T13:08:56.380 回答
1

第 1 阶段 - 视图:

你输入某人的名字<input type="text" name="name"></input>

Stage2 - 型号:

现在您发布到模型,用于$_POST['name']获取某人的姓名并编写一条 sql 语句:

$sql = "INSERT INTO tableName 'name' VALUES(:name)"; // Then prepare and bindParam

在您可以使用 PDO 访问数据库之前,如果您的 gpc 已打开,您的 sql 语句将被转义。也就是说,某人的名字现在将是某人的名字。然后使用 PDO 访问数据库。但是现在数据库中保存了某人的名字,因为 PDO 不会知道单引号前的反斜杠是由 gpc 添加的,而是 PDO 认为您故意在单引号前添加了反斜杠。

结论:如果你使用 PDO,只需关闭 gpc。

于 2013-01-24T18:40:20.773 回答