我的php应用程序使用stripslashes()来处理magic_quotes,但我只想删除magic_quotes所放入的斜杠,因为允许用户提供一个带有输入的\。
答案 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));
}