这个函数 是因为看了下 PHPcms 前台 getshell 发现这些函数果然一个都不能漏。
该函数官方文档 在此 http://php.net/manual/zh/function.extract.php ,多翻官方文档,好多人跟我说过这个习惯 :)
原因 无非是 变量覆盖,至于 能造成什么危害 就看下边代码怎么写了。
int extract ( array &$array [, int $flags = EXTR_OVERWRITE [, string $prefix = NULL ]] )
Flags
EXTR_OVERWRITE
如果有冲突,覆盖已有的变量。
EXTR_SKIP
如果有冲突,不覆盖已有的变量。
EXTR_PREFIX_SAME
如果有冲突,在变量名前加上前缀 prefix。
EXTR_PREFIX_ALL
给所有变量名加上前缀 prefix。
EXTR_PREFIX_INVALID
仅在非法/数字的变量名前加上前缀 prefix。
EXTR_IF_EXISTS
仅在当前符号表中已有同名变量时,覆盖它们的值。其它的都不处理。 举个例子,以下情况非常有用:定义 一些有效变量,然后从 $_REQUEST 中仅导入这些已定义的变量。
EXTR_PREFIX_IF_EXISTS
仅在当前符号表中已有同名变量时,建立附加了前缀的变量名,其它的都不处理。
EXTR_REFS
将变量作为引用提取。这有力地表明了导入的变量仍然引用了 array 参数的值。可以单独使用这个标志或 者在 flags 中用 OR 与其它任何标志结合使用。
如果没有指定 flags,则被假定为 EXTR_OVERWRITE。