我的php应用程序使用stripslashes()来处理magic_quotes,但我只想让它去掉magic_quotes输入的斜杠,因为允许用户输入一个\。
发布于 2009-07-24 11:40:26
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)。
发布于 2009-07-24 12:38:26
使用magic_quotes_gpc无论如何都不是一个好主意,官方从5.3开始就不推荐使用它了,PHP5.5也没有了。更重要的是(而且是立即的),它鼓励了弱安全性,因为它不会真正做任何有用的事情,而这些事情是mysql_real_escape_string、预准备语句或存储过程无法完成的。
如果你能摆脱它,请去做…
发布于 2009-07-24 11:41:53
尝试滚动您自己的编码/解码函数,如下所示:
function doEncode($string){
return addslashes(str_replace("\","\\",$string));
}
function doDecode($string){
return str_replace("\\","\",stripslashes($string));
}https://stackoverflow.com/questions/1177105
复制相似问题