我必须禁用魔术引号时使用PDO


Do i have to disable magic quotes when using PDO

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

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

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

Stage1 - View:

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

第二阶段-模型:

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

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

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

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