http://hi.baidu.com/wordpressing/blog/item/cd56d8ddd92ce9a7cd1166fa.html
/**
* wp_unregister_GLOBALS() - Turn register globals off
*
* @access private
* @since 2.1.0
* @return null Will return null if register_globals PHP directive was disabled
*/
//这个函数的主要功能就是 在register_globals=On的环境下 必须像是在等于off的情况下存取变量才行 保证程序的安全性
function wp_unregister_GLOBALS() {
if ( !ini_get('register_globals') )
return;
/*
如果并没有开启全局变量设置 就直接跳出不执行这个函数!
解释:当register_globals=Off的时候,下一个程序接收的时候应该用$_GET['user_name']和$_GET['user_pass']来接受传递过来的值。(注:当<form>的method 属性为post的时候应该用$_POST['user_name']和$_POST['user_pass'])
*/
if ( isset($_REQUEST['GLOBALS']) )
//在on的情况下 所有的全局变量都是存放在$GLOBALS 如果发现有get或则post过来的
die('GLOBALS overwrite attempt detected');//检测到尝试覆盖全局设置的操作
//因为在on的情况下可以直接覆盖的 所以这属于异常 die掉
// 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]) ) {
$GLOBALS[$k] = NULL;
unset($GLOBALS[$k]);
}
}
wp_unregister_GLOBALS();
unset( $wp_filter, $cache_lastcommentmodified, $cache_lastpostdate );
引用一下:
register_globals使用详解
register_globals是php.ini里的一个配置,这个配置影响到php如何接收传递过来的参数,如果你的问题是:为什么我的表单无法传递数据?为什么我的程序无法得到传递过来的变量?等等,那么你需要仔细的阅读以下的内容。
register_globals的值可以设置为:On或者Off,我们举一段代码来分别描述它们的不同。
代码:
<form name="frmTest" id="frmTest" action="URL">
<input type="text" name="user_name" id="user_name">
<input type="password" name="user_pass" id="user_pass">
<input type="submit" value="login">
</form>
当register_globals=Off的时候,下一个程序接收的时候应该用$_GET['user_name']和$_GET['user_pass']来接受传递过来的值。(注:当<form>的method属性为post的时候应该用$_POST['user_name']和$_POST['user_pass'])
当register_globals=On的时候,下一个程序可以直接使用$user_name和$user_pass来接受值。
顾名思义,register_globals的意思就是注册为全局变量,所以当On的时候,传递过来的值会被直接的注册为全局变量直接使用,而Off的时候,我们需要到特定的数组里去得到它。所以,碰到上边那些无法得到值的问题的朋友应该首先检查一下你的register_globals的设置和你获取值的方法是否匹配。(查看可以用phpinfo()函数或者直接查看php.ini)