VOIR TOUTES LES VARIABLE ACCESSIBLES

FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 - 9 déc. 2005 à 16:15
cs_chapata Messages postés 214 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 9 avril 2010 - 15 mai 2006 à 17:04
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/34999-voir-toutes-les-variable-accessibles

cs_chapata Messages postés 214 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 9 avril 2010 5
15 mai 2006 à 17:04
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
ravery Messages postés 34 Date d'inscription samedi 1 mai 2004 Statut Membre Dernière intervention 23 mars 2007 1
15 mai 2006 à 15:41
Tes input 'offre' doivent être un tableau.
Essaye ceci tu comprendra mieux :

<form method="post" action="test.php">






</form>

<?php
echo '';
var_dump($_POST);
echo '

';
?>
cs_chapata Messages postés 214 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 9 avril 2010 5
15 mai 2006 à 15:25
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
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
12 déc. 2005 à 15:38
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).
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
12 déc. 2005 à 15:02
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 "
\$$value => ".gettype($$value)."
";
echo(str_replace(array("\n"," "),array("
\n"," "),var_export($$value,true)));
} else {
echo "
'\$$value' n'existe pas
";
}
}
echo '
';

}

// comment faire ? on passe le nom des variables, pas les variables !
dump('_SERVER', 'pouet', '_POST', 'a');
?>
Steph666 Messages postés 74 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 5 juin 2008
12 déc. 2005 à 12:26
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.' => ';
@afficher_tableau($valeur);
print '';
} else {
print $cle." = ".$valeur."
";
}
}
} else {
print $tableau;
}
}.

Stéph.
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
12 déc. 2005 à 12:23
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
ravery Messages postés 34 Date d'inscription samedi 1 mai 2004 Statut Membre Dernière intervention 23 mars 2007 1
12 déc. 2005 à 11:14
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.
Steph666 Messages postés 74 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 5 juin 2008
12 déc. 2005 à 10:53
Salut,

un petit

print "";
print_r($_GLOBALS);
print "

";

et le tour est joué.
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
11 déc. 2005 à 13:32
"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 :)
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
10 déc. 2005 à 20:51
bah htmlentities() et un str_replace("\n",'
') dans le print_r, ça fait déjà mieux :-)
ravery Messages postés 34 Date d'inscription samedi 1 mai 2004 Statut Membre Dernière intervention 23 mars 2007 1
10 déc. 2005 à 18:57
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)
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
10 déc. 2005 à 18:52
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 +
bubuze Messages postés 31 Date d'inscription vendredi 18 février 2005 Statut Membre Dernière intervention 25 avril 2006
10 déc. 2005 à 15:42
vous êtes tous très bons ! une très belle pages de commentaires. continuez les uns, appréciez les autres !
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
10 déc. 2005 à 14:57
un :
print_r($_GLOBALS);

aurait donné la même chose à peu de chose près aussi :)
pichpoich Messages postés 26 Date d'inscription lundi 5 janvier 2004 Statut Membre Dernière intervention 29 janvier 2009
9 déc. 2005 à 23:38
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.
ravery Messages postés 34 Date d'inscription samedi 1 mai 2004 Statut Membre Dernière intervention 23 mars 2007 1
9 déc. 2005 à 17:17
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).
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
9 déc. 2005 à 16:15
"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 !