所以我只是测试了mysql_real_escape();
函数,并且它在"
之前放置了一个\
。当内容回显到页面上时,我只需在"
之前获得\'
的内容。所以我们假设我发布了""""""""""""""""""""""""""""
,我得到的结果是\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"
。SQL注入帮助
有一些代码删除时,它的回显到页面上的\
?
所以我只是测试了mysql_real_escape();
函数,并且它在"
之前放置了一个\
。当内容回显到页面上时,我只需在"
之前获得\'
的内容。所以我们假设我发布了""""""""""""""""""""""""""""
,我得到的结果是\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"
。SQL注入帮助
有一些代码删除时,它的回显到页面上的\
?
通过添加那些斜线,只是mysql_real_escape_string
转换串入数据库的输入格式。当数据从数据库中传出时,它应该没有任何斜杠出现。你不应该自己去除它们。
使用stripslashes
与其他人一样,建议在大多数情况下会做与mysql_real_escape_string
相反的操作,但不是全部,而且您不应该为此目的而依赖它。请注意,如果你发现自己需要使用它,那么你已经做了一些其他的错误。
+1准确!这个结果指向双重编码 – Andomar
$ text_share_body = $ _POST ['text_share_body']; $ text_share_body = mysql_real_escape_string($ text_share_body); – frankmeacey
它进入'“的前用“\” S上的数据库,但它并不全自动撤消斜杠上输出 – frankmeacey
你不需要unescape,即。删除斜线 - 它们不会插入到数据库中。它们仅用于将数据传递给MySQL,它们不会写入数据库。当你SELECT
的数据,你不会看到斜杠。
你知道如何mysql_real_escape()
作品。提示:它允许为SQL使用编码字符串。例如mysql_query('SELECT * FROM users WHERE name="'.mysql_real_escape_string($name).'"');
。它可以用来插入不会引用引号的字符串,例如" or 1=1 -- "
制作为SELECT * FROM users WHERE name="" or 1=1
。你必须在之前激活它插入它的数据库。
当你将读取该数据,斜线将不以任何方式存在。
其实,看着下面是什么,我会做出这样的回答,不作评论...
您使用'mysql_real_escape_string()'当你即将把字符串到数据库中。当您从数据库中读取字符串时,它们将被转义。很显然,如果你只是'echo mysql_real_escape_string($ my_string))'',你会得到你所看到的效果。 –
如何将数据插入数据库?如果您正在执行手动构建的INSERT查询,则需要'mysql_real_escape_string()'。如果您正在使用准备好的语句(传递值作为参数插入),那么不要。请粘贴一个行为不正确的最小代码示例。 – Crack