Recuperer les variables utilisateur

Contenu du snippet

récupère les variables utilisateurs initialisées à l'exclusion des globales et
des super-globales, les tableaux et variables sont directement exploitable en php

Source / Exemple :


<?php
 $b=get_defined_vars();$tab=array();
 $a=array_flip(array('_SESSION','HTTP_SESSION_VARS','_REQUEST',
 '_FILES','HTTP_POST_FILES','_ENV','HTTP_ENV_VARS',
 '_SERVER','HTTP_SERVER_VARS','_COOKIE',
 'HTTP_COOKIE_VARS','_GET','HTTP_GET_VARS',
 '_POST','HTTP_POST_VARS','GLOBALS')
 );echo'<pre>';
 foreach($b as $k=>$v){
     if(!array_key_exists($k,$a)){$i=var_export($b[$k],1);     
/*Corecction d'un bug d'affichage de virgule en fin de tableau (marche jusqu'à tableau à 4 niveau de tableau imbriqués
mais peu fausser les valeurs si elles contiennent des sauts de ligne suivi de parenthèse
Dans ce cas utiliser plutôt $i=htmlspecialchars($i); il y aura les virgules mais les valeurs seront ok.*/
$i=htmlspecialchars(str_replace(array(",\n      )",",\n    )",",\n  )",",\n)"),array("\n      )","\n    )","\n  )","\n)"),$i));
		 if(is_array($v)){echo '$',$k,'=',$i,';<br />';}/* affiche les tableaux */
         else{$tab[$k]=$i;}/* stocke les variables*/
     }
 }
foreach($tab as $k=>$v){echo '$'.$k.' = '.$v.';<br />';}/* affiche les variables */
echo'</pre>';
//********************************************************************************************************
// Variante en fonction
function vars(){$tab=array();$b=$GLOBALS;
 $a=array_flip(array('_SESSION','HTTP_SESSION_VARS','_REQUEST',
 '_FILES','HTTP_POST_FILES','_ENV','HTTP_ENV_VARS',
 '_SERVER','HTTP_SERVER_VARS','_COOKIE',
 'HTTP_COOKIE_VARS','_GET','HTTP_GET_VARS',
 '_POST','HTTP_POST_VARS','GLOBALS')
 );echo'<pre>';
 foreach($b as $k=>$v){
     if(!array_key_exists($k,$a)){$i=var_export($b[$k],1);     
/*Corecction d'un bug d'affichage de virgule en fin de tableau (marche jusqu'à tableau à 4 niveau de tableau imbriqués
mais peu fausser les valeurs si elles contiennent des sauts de ligne suivi de parenthèse
Dans ce cas utiliser plutôt $i=htmlspecialchars($i); il y aura les virgules mais les valeurs seront ok.*/
$i=htmlspecialchars(str_replace(array(",\n      )",",\n    )",",\n  )",",\n)"),array("\n      )","\n    )","\n  )","\n)"),$i));
		 if(is_array($v)){echo '$',$k,'=',$i,';<br />';}/* affiche les tableaux */
         else{$tab[$k]=$i;}/* stocke les variables*/
     }
 }
foreach($tab as $k=>$v){echo '$'.$k.' = '.$v.';<br />';}/* affiche les variables */
echo'</pre>';
}
vars();
?>

Conclusion :


get_defined_vars() retourne un tableau de toutes les variables définies
sauf les globales pour certaines versions de php,
c'est ensuite filtré par !array_key_exists() pour exclure les super
globales...testé sur PHP>= 4.3

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.