<?php
$b='333';
$ccc='klsdjlf';
function GetUserVars($arr){
$arr2=array("COMSPEC", "DOCUMENT_ROOT", "HOME", "HTTP_ACCEPT", "HTTP_ACCEPT_ENCODING", "HTTP_ACCEPT_LANGUAGE", "HTTP_CONNECTION", "HTTP_COOKIE", "HTTP_HOST", "HTTP_USER_AGENT", "PATH", "REDIRECT_STATUS", "REDIRECT_URL", "REMOTE_ADDR", "REMOTE_PORT", "SCRIPT_FILENAME", "SERVER_ADDR", "SERVER_ADMIN", "SERVER_NAME", "SERVER_PORT", "SERVER_SIGNATURE", "SERVER_SOFTWARE", "SystemRoot", "WINDIR", "GATEWAY_INTERFACE", "SERVER_PROTOCOL", "REQUEST_METHOD", "QUERY_STRING", "REQUEST_URI", "SCRIPT_NAME", "PATH_INFO", "PATH_TRANSLATED", "PHPSESSID", "PHP_SELF", "argv", "argc", "HTTP_POST_VARS", "_POST", "HTTP_GET_VARS", "_GET", "HTTP_COOKIE_VARS", "_COOKIE", "HTTP_SERVER_VARS", "_SERVER", "HTTP_ENV_VARS", "_ENV", "HTTP_POST_FILES", "_FILES", "_REQUEST", "HTTP_SESSION_VARS", "_SESSION");
foreach($arr as $k=>$v){
if(!in_array($k, $arr2)){
$arr3[$k]=$v;
}
}
return $arr3;
}
echo '<pre>';
$arr=GetUserVars(get_defined_vars());
print_r($arr);
?> $arr2中限制的预定义变量可能还不完全,将所有预定义变量去除就可以得到自定义的变量的变量名和值.

解决方案 »

  1.   

    print_r($_SESSION);
    print_r($_COOKIE);
    print_r($_POST);
    print_r($_GET);
    差不多了吧。
      

  2.   

    同 ice_berg16(寻梦的稻草人)
      

  3.   

    get_defined_vars()按楼主的表述,应该是不包括系统定义的全局变量的
    <?php
    $sysvar = get_defined_vars();
    $a = 1;
    $b = 'a';
    print_r(array_diff(get_defined_vars(),$sysvar));
    ?>
    得到
    Array
    (
        [a] => 1
        [b] => a
    )
      

  4.   

    同意 xuzuning(唠叨) 
    可惜又慢了一步