begin process at 2012 05 27 20:52:59
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > VOIR TOUTES LES VARIABLE ACCESSIBLES

VOIR TOUTES LES VARIABLE ACCESSIBLES


 Information sur la source

Note :
9,33 / 10 - par 6 personnes
9,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Astuces Classé sous :vardump, debuggage, globals Niveau :Débutant Date de création :09/12/2005 Date de mise à jour :12/12/2005 11:19:40 Vu :6 704

Auteur : ravery

Ecrire un message privé
Site perso
Commentaire sur cette source (18)
Ajouter un commentaire et/ou une note

 Description

Il arrive parfois qu'on ai un conflit de nom de variable entre les sessions, les cookies et les variables mêmes.
Ce script permet de voir TOUT ce que le script connait comme nom de variables.

Pratique quand on veux débugger ou trouver une obm de variable (et son contenu par la même occasion).

Personnelement il est toujours dans mon footer. Et je l'active en mode developpement / débuggage.

Source

  • Deux choix :
  • de la part de steph666 :
  • print "<pre>";
  • print_r($_GLOBALS);
  • print "</pre>";
  • ou de moi :
  • foreach($GLOBALS as $cle => $valeur) {
  • if (is_array($valeur)) {
  • echo '<b>'.$cle.' :</b><br />';
  • foreach($valeur as $_cle => $_valeur) {
  • if (is_array($_valeur)) {
  • echo '|   <b>'.$_cle.' :</b><br />';
  • foreach($_valeur as $__cle => $__valeur) {
  • echo '|   '.$__cle.' : '.$__valeur.'<br />'."\n";
  • }
  • echo '|   ---------------------------<br />';
  • } else {
  • echo '|   '.$_cle.' : '.$_valeur.'<br>'."\n";
  • } }
  • echo '---------------------------<br /><br />';
  • } else {
  • echo $cle.' : '.$valeur.'<br />'."\n";
  • }
  • }
Deux choix :
de la part de steph666 :
print "<pre>";
print_r($_GLOBALS);
print "</pre>";

ou de moi :

	foreach($GLOBALS as $cle => $valeur) {
		if (is_array($valeur)) {
			echo '<b>'.$cle.' :</b><br />';
			foreach($valeur as $_cle => $_valeur) {
				if (is_array($_valeur)) {
				echo '|   <b>'.$_cle.' :</b><br />';
				foreach($_valeur as $__cle => $__valeur) {
					echo '|   '.$__cle.' : '.$__valeur.'<br />'."\n";
				}
				echo '|   ---------------------------<br />';
			} else {
		  		echo '|   '.$_cle.' : '.$_valeur.'<br>'."\n";
			}			}
			echo '---------------------------<br /><br />';
		} else {
	  		echo $cle.' : '.$valeur.'<br />'."\n";
		}
	}



 Historique

12 décembre 2005 11:19:42 :
Aprés moults remous sur quelle est la meilleure version de ce sript. En voici deux version : celle de steph666, comptacte, efficace la mienne plus lourde. Permet d'apprendre les tableau assiociatifs aux débutant (ce script est quand même fait pour eux)

 Sources du même auteur

Source avec Zip TAPI : METTRE EN RELATION DEUX POSTES TELEPHONIQUES
Source avec Zip WINAMP EVERYWHERE
Source avec Zip Source avec une capture SAUVEGARDE D'UNE BASE DE DONNEES (MYSQL) AVEC CHOIX DES TABL...
Source avec Zip VERIFICATEUR DE LIENS À PARTIR D'UNE BASE DE DONNÉE
Source avec Zip SCRIPT DE SAUVEGARDE AUTOMATIQUE DES FICHIERS RÉCENEMENT POS...

 Sources de la même categorie

AFFICHÉ SUR UN TABLEAU AVEC PAGINATION ET BASE DE DONNÉES par stormxp
Source avec Zip Source avec une capture GENERATEUR D'ONGLET DE NAVIGATION PHP par pos123
FORMATER UN LIEN YOUTUBE, DAILYMOTION OU VIMEO POUR L'UTILIS... par kgb93
Source avec Zip Source avec une capture PAGINATION + FICHIER CSS par profdi
Source avec Zip Source avec une capture SYSTEME D'AUTHENTIFICATION PHP AVEC PROTÉCTION KEYLOGGER par mtrix000

Commentaires et avis

Commentaire de FhX le 09/12/2005 16:15:31

"Il arrive parfois qu'on ai un conflit de nom de variable entre les sessions, les cookies et les variables mêmes."
Non ==> register_globals "Off" et on en parle plus !

Avec ca, les variables en type GET sont dans $_GET, POST dans $_POST, COOKIE dans $_COOKIE, SERVEUR dans $_SERVER...

Plus aucune possibilité de se tromper !

Commentaire de ravery le 09/12/2005 17:17:04

Je n'y peux rien, mon hebergeur les à a ON, donc je le copie. et ca m'arrive d'avoir des conflits.
Certains hébergeurs ont le addslashes automatique sur un requete (ovh par exemple) ce que je trouve pire en terme de sécurité. Pour les register global ON, il suffit d'initialiser un variable avant de l'utiliser (comme en C quoi).

Commentaire de pichpoich le 09/12/2005 23:38:12

Je viens d'essayer ce code sur le site que je suis en train de développer (je trouvais que ça ramait), j'ai des variables de session dans tous les sens (normal, j'en utilise beaucoup, mais je ne savais pas à quel point).

C'est énorme, je vais mettre ce code sur ma clef usb et je ne sors plus sans.

Merci Ravery.

Commentaire de FhX le 10/12/2005 14:57:17

un :
print_r($_GLOBALS);

aurait donné la même chose à peu de chose près aussi :)

Commentaire de bubuze le 10/12/2005 15:42:40

vous êtes tous très bons ! une très belle pages de commentaires. continuez les uns, appréciez les autres !

Commentaire de Anthomicro le 10/12/2005 18:52:55

Salut,

"Je n'y peux rien, mon hebergeur les à a ON, donc je le copie. et ca m'arrive d'avoir des conflits."

dans un htaccess : php_flag register_globals off


"Certains hébergeurs ont le addslashes automatique sur un requete (ovh par exemple) ce que je trouve pire en terme de sécurité"

au contraire ça t'évite les failles de sql injection d'avoir ça à on par défaut, mais bon avoir une fonction qui traite ce genre de cas est pas mal non plus ;-)

a +

Commentaire de ravery le 10/12/2005 18:57:19

Ben, honnetement, quand on voit la gueule d'un print_r (ou var_dump), ca donne généralement pas envie de lire.
Si on pouvait faire un nl2br(print_r($GLOBALS)), ou simili, je ne dis pas, mais c'est pas possible.
C'est pour ca que j'ai fait ce bout de code... (j'aime pas réinventer la roue, je l'améliore)

Commentaire de Anthomicro le 10/12/2005 20:51:51

bah htmlentities() et un str_replace("\n",'<br />') dans le print_r, ça fait déjà mieux :-)

Commentaire de FhX le 11/12/2005 13:32:23

"Ben, honnetement, quand on voit la gueule d'un print_r (ou var_dump), ca donne généralement pas envie de lire. "

Oh quand même !

Tu vois les associations clé/valeur assez facilement avec le numéro d'index en plus !

Mais c'est vrai que des fois c'est assez déroutant quand y'a un paquet de choses.

Par contre, si j'ai une seule remarque à te faire concernant ton code, c'est au niveau de tes echo(). Tu fais des : echo "truc-machin $youpla "; alors que c'est très moche. Utilise les '' au lieu des "" ! Ce qui doit donner : echo 'truc-machin '.$youpla;

Faut uniformiser le tout :)

Commentaire de Steph666 le 12/12/2005 10:53:28

Salut,

un petit

print "<pre>";
print_r($_GLOBALS);
print "</pre>";

et le tour est joué.

Commentaire de ravery le 12/12/2005 11:14:23

Là oui. steph666, joli coup. Par contre pourquoi vous obstiner - vous à mettre un underscore avant le global, chez moi ca ne marche pas, il me faut juste un $GLOBALS. Etrange tout ca j'update la source en citant steph666 comme auteur.

Commentaire de J_G le 12/12/2005 12:23:45

salut RAVERY...

tu as raison, c'est $GLOBALS (sans le underscore). Si tu n'aime pas print_r, il y'a var_export() que je trouve un peu mieux.

Ensuite, tu semble ignorer le deuxième paramêtre de ces fonctions...
$texte = var_export($GLOBALS, TRUE);

Voilà, ce genre de source est toujours utile...
Bon débuggage

Commentaire de Steph666 le 12/12/2005 12:26:34

Je te rassures, avant de connaître cette astuce, j'ai fais ma fonction d'affichage ^^ :

function afficher_tableau($tableau, $nomfic = "", $tab = "") {
if (is_array($tableau)) {
foreach ($tableau as $cle => $valeur) {
if (is_array($valeur)) {
print $cle.' => <ul>';
@afficher_tableau($valeur);
print '</ul>';
} else {
print $cle." = ".$valeur." <br>";
}
}
} else {
print $tableau;
}
}.

Stéph.

Commentaire de J_G le 12/12/2005 15:02:11

Tant qu'on y est...
je te présente ma fontion de débuggage. Avec un mixte de toutes celles présentées ici, on peut faire un truc pas mal...

<?php
// cette fonction est très vielle, si je devais la ré-écrire, je ne ferais plus comme ça...

function dump( /* nom des variables */ ) {
    if( func_num_args()==0 ) {
        echo 'dump() sans argument !?!\n';
    }

    $args = func_get_args();
    foreach( $args as $value ) {
        global $$value;
        if( isset($$value) ) {
            echo "<br /><font size=10 >\$$value</font> => ".gettype($$value)."<br />";
            echo(str_replace(array("\n"," "),array("<br />\n","&nbsp;"),var_export($$value,true)));
        } else {
            echo "<br /><font size=10 >'\$$value' n'existe pas</font><br />";
        }
    }
    echo '<br />';

}

// comment faire ? on passe le nom des variables, pas les variables !
dump('_SERVER', 'pouet', '_POST', 'a');
?>

Commentaire de Anthomicro le 12/12/2005 15:38:55

<pre> c'est pas mal, t'as aussi le white-space:pre; qui fait la même chose en CSS (si tu veux foutre ça dans une balise code par exemple).

Commentaire de chapata le 15/05/2006 15:25:16

Salut ...
il est peut etre un peu tard pour répondre à ce message ... (lol)

j'ai un problème de variable ...
J'ai ma page HTML, avec plusieurs input de type texte qui contienne la liste des fichiers contenu dans un répertoire (le nombre de fichier varie ... donc le nombre d'input aussi). C'est input porte le même tous le même nom "offre".

Pour simplifier ma question, j'ai 2 inputs qui portent le même nom.
Je valide mon formuliare en methode POST, et je veux bien sur récupérer de l'autre coté, la valeur de chaque input "offre".

Est-ce que c'est techniquement possible ?
J'ai essayer ça mais cela ne marche pas :

For ($i = 0 ;$i< count($_POST['offre'];$i++){
    echo $_POST['offre'][$i];
}

cela me retourne uniquement une lettre par rapport à l'index $i.

En essayant la source de ce message, je ne vois pas toutes mes variables de même nom postées.

Y a t'il une fonction ou un code du type javascript 'formulaire.offre.length' qui éxiste ?

Si une âme charitable veut bien m'aiguiller sur la direction à prendre ... je suis preneur.

Chapata

Commentaire de ravery le 15/05/2006 15:41:47

Tes input 'offre' doivent être un tableau.
Essaye ceci tu comprendra mieux :

<form method="post" action="test.php">
<input type="text" name="offre[]" value="valeur1" />
<input type="text" name="offre[]" value="valeur2" /><br />
<input type="text" name="offre[]" value="valeur3" /><br />
<input type="submit" />
</form>

<?php
echo '<pre>';
var_dump($_POST);
echo '</pre>';
?>

Commentaire de chapata le 15/05/2006 17:04:51

Alors la , un grand merci !!!!!
dommage que je ne peux pas valider ta réponse ...
Mais je la valide à l'écrit quand même !!!

ChapaTa

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

navigation dynamique [ par CouB ] voila je voudrais pouvoir générer un barre de nav (prec. / suivant /fin) par rapport à une variable .($BBA_IDL)Pour l'instant j'arrive à ca : &lt;?php registers_globals ? [ par Hicks ] Voila je suis sous php4.2 et je voudrais mettre le registers_global a TRUE pour pouvoir utiliser des variables de session .Mais je sais pas comment fa registers globals & sessions [ par eax ] salutjuste une petite question, depuis que j'ai passé register_globals à off, je n'arrive plus à retrouver ma variable anciennement appelée $PHPSESSID Variables globales php4 [ par petit_stagiaire ] bonjour, je possède un fichier global.php qui contient des variables dont j'ai besoin notamment pour me connecter à ma base de donnée.Dans mon index j Pble de variables!!! [ par djinko ] Bonsoir, J'ai tenté de modifier mes variable qui fonctionnaient en register_globals=On pour que ça puisse fonctionner en register_globals=Off, mais je Query, Fetch et $GLOBALS en php [ par dorian53 ] Bonjour,Je voudrais executer une requete en faisant et fermant la connexion a la base automatiquement.mysql_query ( string query , resource link_ $GLOBALS + utf8_decode() [ par mattdelavega ] BonjourJ'ai mon flash qui envoi par $POST des variables &#224; mon php...petit probl&#232;me ... le format c'est du utf8 !Donc mes lettres accentu&#23 Les register_globals sont sur On chez free T__T [ par DEL ] Bonjour a tous, Je codais mon site tranquillement et je me suis rendu compte que les register_globals chez free sont sur On. Ca me bloque vraiement asyphp1.8 et register_globals [ par billy67000 ] Bonjour, Je viens d'installer easyphp 1.8 register_globals= off lorsque j'itilise $_GET['action']; j'ai le message "Undefined index: action" est-ce n perte de connexion [ par crazykamel ] Bonjour, sur un projet de site Web, j'ai une page ou j'ai une requete sql pour afficher des champs de ma BDD. Cependant, je suis oblig&#233; de red&#2


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,671 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales