2009-07-24 111 views
1

我的php应用程序使用stripslashes()来处理magic_quotes,但我只希望它删除magic_quotes放入的斜线,因为用户被允许提供\他的输入。使用stripslashes()区别

回答

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结束不应该有除了那些用户输入的任何斜杠。

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

-1

尝试滚动自己的编码/解码功能,像这样:

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

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

使用magic_quotes_gpc的是一个坏主意,无论如何,它的正式弃用的5.3和为PHP 5.5的。更重要的是(并且立即),它鼓励安全性较差,因为它并不是真正的做的任何有用的事情都无法通过mysql_real_escape_string或预处理语句或存储过程来完成。

如果你可以摆脱它,请做...