可能重复: 字符串
最近,我一直在阅读有关防止SQL注入的文章,我试图在不同的函数之间培养一些理解的感觉,这样我就可以学习基础知识了。
我读过关于mysql_real_escape_string的文章,我知道它基本上是转义它认为“特殊”的字符,这样它就不会对SQL语法感到困惑了?
现在,假设这至少在某种程度上是正确的--是否需要将stripslashes函数与mysql_real_escape_string结合使用?我想知道stripslashes是什么,它是干什么用的。
发布于 2012-12-13 06:00:22
如果您在使用stripslashes之后立即对输入使用mysql_real_escape_string,那么您将有效地撤销它。使用stripslashes可能还有其他原因,但在我的例子中,我只需要它来消除魔法引用的恐怖。它实际上与addslashes正好相反。
addslashes不一定像mysql_real_escape_string那样转义输入,而且它们不能用于相同的目的。
甚至比mysql_*更好的是,您应该阅读使用准备好的语句(如PDO中的语句)。然后,您甚至不必担心mysql_*或stripslashes (除了神奇的引号)。
发布于 2012-12-13 06:01:10
函数stripslashes()将取消转义用反斜杠\转义的字符。它通常用于通过addslashes()转义的字符串,或者如果您的magic_quotes配置启用了magic_quotes。
当使用SQL-转义函数(如mysql_real_escape_string() )时,不需要使用stripslashes(),因为MySQL-适配器只会在插入数据库时转义值--斜杠不会保留在实际值中。如果要对已经用mysql_real_escape_string()转义的变量使用mysql_real_escape_string(),它将删除斜杠,就好像它是使用addslashes()转义的一样--不过这是毫无意义的。
如果您的目标是防止SQL注入,我强烈建议您研究MySQLi或PDO,而不是旧的mysql_方法。MySQLi和PDO都提供了准备好的语句,如果使用得当,这些语句将防止SQL注入,而无需记住调用特殊的转义函数,或者担心您的数据是否会被修改。
发布于 2012-12-13 06:02:31
条纹斜杠函数用于Un-quotes a quoted string
例子:
<?php
echo stripslashes("how\'s going on?");
?>上述代码的输出如下:
how's going on?欲知更多详情:
https://stackoverflow.com/questions/13853820
复制相似问题