服务器上有魔术引号并且由于某种原因无法关闭..... now stripslashes会删除魔术引号添加的所有斜杠,但是如果用户在输入字段中添加了斜杠(我们允许斜杠) ),striplashes也会删除它。
我正在尝试一个正则表达式,只有当它前面有{',“,}时才会删除斜杠....
任何帮助将不胜感激。
答案 0 :(得分:1)
我在配置文件中使用此代码:
// remove slashes, if they are being automatically added
if ( get_magic_quotes_gpc () ) {
$_GET = array_map('stripslashes', $_GET);
$_POST = array_map('stripslashes', $_POST);
$_COOKIE = array_map('stripslashes', $_COOKIE);
$_REQUEST = array_map('stripslashes', $_REQUEST); // see ThiefMaster's comment
}
这是我唯一需要担心斜线的地方。在所有其他地方,我可以放心地假设没有“魔术引号”。
虽然stripslashes()
不适用于数组,但是如果你希望在$ _GET,$ _POST或$ _COOKIE中使用数组作为值(在公共网页/系统中,你应该期望有数组),此函数可用作回调:
function stripslashes_recursive($value) {
if ( is_array($value) ) {
return array_map(__FUNCTION__, $value);
}
return stripslashes($value);
}
PHP 5.3用户可能会使用闭包作为回调:
$stripslashes = function($value) use(&$stripslashes) {
if ( is_array($value) ) {
return array_map($stripslashes, $value);
}
return stripslashes($value);
};
这不会污染具有附加功能的全局范围(stripslashes_recursive()
)。