一段来自discuz的PHP防注入代码,有一处不明白希望得到解释。

$magic_quotes_gpc=get_magic_quotes_gpc();@extract(daddslashes($_COOKIE));@extract(dad... $magic_quotes_gpc = get_magic_quotes_gpc();
@extract(daddslashes($_COOKIE));
@extract(daddslashes($_POST));
@extract(daddslashes($_GET)); ///这几个extract是什么意思,为什么这样做?

if(!$magic_quotes_gpc) {
$_FILES = daddslashes($_FILES);
}

function daddslashes($string, $force = 0) {
if(!$GLOBALS['magic_quotes_gpc'] || $force) {
if(is_array($string)) {
foreach($string as $key => $val) {
$string[$key] = daddslashes($val, $force);
}
} else {
$string = addslashes($string);
}
}
return $string;
}
展开
 我来答
匿名用户
2012-11-28
展开全部
把数组内容导入到符合表

比如$_COOKIE['a']='123'
哪么经过他的非法字符过滤后,extract函数后变成
$a='123'这样子的模式。。
这个是有顺序的,按官方这样子的排序中
如果$_COOKIE\$_POST\$_GET 中都有相同的变量,后面的会替换掉前面的。。
追问
请问如果是未知的数组怎么办?例如:$_POST["Data"]["0"]="a";$_POST["Data"]["1"]="b";$_POST["Data"]["2"]="c";或$_POST["Data"]["0"]="a";$_POST["Data"]["1"]="b";$_POST["Data"]["2"]="c";$_POST["Data"][“3"]="d";
--

上面的数组data关联数组下的数量是未知的,可以是5个,可以是N个。被@extract(daddslashes($_POST));处理后,还如何遍历Data数组并进行SQL语句拼接?
追答
还是一个数组

你这个例子中会是一个数组
$Data=array('0'=>'a','1'=>'b'.......);
123010wqq
2012-11-28 · TA获得超过348个赞
知道小有建树答主
回答量:595
采纳率:0%
帮助的人:242万
展开全部
PHP extract() 函数从数组中把变量导入到当前的符号表中。
对于数组中的每个元素,键名用于变量名,键值用于变量值。
更多追问追答
追问
这我查过已经知道了,但不明白它这样做对防注入有任何意义吗?为什么要把数组提取出来?
追答
提取一次之后变成 字符串了,是string类型的数据了 可以去掉 一些 正则写入
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式