有条不紊地使用stripslashes()

时间:2009-07-24 11:36:29

标签: php

我的php应用程序使用stripslashes()来处理magic_quotes,但我只想删除magic_quotes所放入的斜杠,因为允许用户提供一个带有输入的\。

3 个答案:

答案 0 :(得分:8)

stripslashes不会不分青红皂白地删除斜杠。

如果启用了魔术引号,那么它将转义为斜杠,将'\'替换为'\\',而stripslashes应撤消正确转义的魔术引号,将'\\'替换为'\' // Ripped from the PHP manual (http://us3.php.net/manual/en/function.get-magic-quotes-gpc.php) if (get_magic_quotes_gpc()) { $lastname = stripslashes($_POST['lastname']); } else { $lastname = $_POST['lastname']; } 让您回到用户输入的内容。

我想你可能只想要这样的东西:

$lastname

在该代码的末尾{{1}}不应该包含除用户输入的斜杠之外的任何斜杠。

另一方面,魔术引号是一个安全问题,在较新版本的PHP中已弃用(请参阅the docs)。

答案 1 :(得分:2)

无论如何,使用magic_quotes_gpc是一个坏主意,从5.3开始正式弃用它,从PHP 5.5开始。更重要的是(并且立即),它鼓励弱安全性,因为它实际上没有任何有用的东西,这些都是mysql_real_escape_string或预处理语句或存储过程无法完成的。

如果你能摆脱它,请做...

答案 2 :(得分:-1)

尝试滚动自己的编码/解码功能,如下所示:

function doEncode($string){
     return addslashes(str_replace("\","\\",$string));
}

function doDecode($string){
    return str_replace("\\","\",stripslashes($string));
}