星期二, 九月 26, 2006

清除自动创建的变量 learn wordpress (two)

清除自动创建的变量
// Turn register globals off
function unregister_GLOBALS() {
if ( !ini_get('register_globals') ) # 如果定义的全局变量
return;

if ( isset($_REQUEST['GLOBALS']) )
die('GLOBALS overwrite attempt detected');

// Variables that shouldn't be unset
$noUnset = array('GLOBALS', '_GET', '_POST', '_COOKIE', '_REQUEST', '_SERVER', '_ENV', '_FILES', 'table_prefix');

$input = array_merge($_GET, $_POST, $_COOKIE, $_SERVER, $_ENV, $_FILES, isset($_SESSION) && is_array($_SESSION) ? $_SESSION : array());
foreach ( $input as $k => $v )
if ( !in_array($k, $noUnset) && isset($GLOBALS[$k]) )
unset($GLOBALS[$k]); # 从GLOBALS中清除Request中设定的变量
}
-- wp-settings.php

# 如果指定了自动注册全局变量(register_globals)则清除所有从请求($input)过来的非保留($noUnset)的全局变量(in $GLOBALS).
Global 变量:$GLOBALS
注: $GLOBALS 在 PHP 3.0.0 及以后版本中适用。
由所有已定义全局变量组成的数组。变量名就是该数组的索引。
这是一个“superglobal”,或者可以描述为自动全局变量。这只不过意味这它在所有的脚本中都有效。在函数或方法中不需要使用 global $GLOBALS; 来访问它。
-- 来自《php手册》 http://cn.php.net/manual/zh/reserved.variables.php

没有评论: