Discussion:
Transformer le nom d'une variable en chaine
(trop ancien pour répondre)
Pascal
2009-04-03 22:06:45 UTC
Permalink
Bonjour

je cherche à récupérer dans une chaine le nom d'une variable :

Par exemple j'ai une variable nommée $mavariable
et je souhaite récupérer la chaine suivante :
'$mavariable' ou 'mavariable'


Merci

Pascal
Olivier Miakinen
2009-04-03 22:23:13 UTC
Permalink
Bonjour,
Post by Pascal
Par exemple j'ai une variable nommée $mavariable
'$mavariable' ou 'mavariable'
Indépendamment du fait que si tu sais qu'elle s'appelle $mavariable tu
peux toujours écrire '$mavariable', cela ne me semble pas possible à
partir d'autre chose que du nom lui-même.

La meilleure preuve de cela est l'existence d'assignation par référence,
où deux noms différents pointent vers le même emplacement mémoire.
Cf. <http://fr3.php.net/manual/fr/language.variables.basics.php>.

En revanche, l'inverse est possible, même s'il y a peu de cas où ce soit
vraiment indispensable.
Cf. <http://fr3.php.net/manual/fr/language.variables.variable.php>.

Cordialement,
--
Olivier Miakinen
Pascal PONCET
2009-04-04 11:54:43 UTC
Permalink
Post by Pascal
Par exemple j'ai une variable nommée $mavariable
'$mavariable' ou 'mavariable'
Bonjour,

Au-delà de la réponse d'Olivier, j'ajouterai que la question clé est :
Qui (ou quoi) décide, au moment de sa première utilisation, que la
variable sera nommée "$mavariable" ?
Sans réponse cohérente, le problème serait bel et bien pris à l'envers !

Cordialement,
Pascal (bis)
Pascal
2009-04-05 21:00:29 UTC
Permalink
Post by Pascal
Bonjour
Par exemple j'ai une variable nommée $mavariable
'$mavariable' ou 'mavariable'
Merci
Pascal
C'est une variable dans un lien : monlien.php?variable1=x ou
monlien.php?variable2=y etc...

Je voudrais connaitre sur la page monlien.php quelle est le nom de la
variable passée.

Il y a bien sur une autre solution :
monlien.php?variable1=x&variable2=&variable3=

et il me suffit de tester les 3 variables possibles pour savoir laquelle
contient une valeur

Cordialement

Pascal
Olivier Miakinen
2009-04-05 21:34:28 UTC
Permalink
Post by Pascal
Post by Pascal
Par exemple j'ai une variable nommée $mavariable
'$mavariable' ou 'mavariable'
C'est une variable dans un lien : monlien.php?variable1=x ou
monlien.php?variable2=y etc...
if (isset($_REQUEST['variable1'])) {
$mavariable = $_REQUEST['variable1'];
$nomvariable = 'variable1';
} else if (isset($_REQUEST['variable2'])) {
$mavariable = $_REQUEST['variable2'];
$nomvariable = 'variable2';
} else {
die('il manque variable1 et variable2');
}
Post by Pascal
monlien.php?variable1=x&variable2=&variable3=
et il me suffit de tester les 3 variables possibles pour savoir laquelle
contient une valeur
Je ne vois pas bien ce qu'on y gagne.
Pascal PONCET
2009-04-06 09:36:36 UTC
Permalink
Post by Pascal
C'est une variable dans un lien : monlien.php?variable1=x ou
monlien.php?variable2=y etc...
Je voudrais connaitre sur la page monlien.php quelle est le nom de la
variable passée.
Pardon, mais je crois qu'on tourne en rond !
On ne comprend toujours pas d'où vient le nom inconnu.

Alors, admettons que plusieurs variables soient passées dans l'url, dont
une pour laquelle on ne connait pas le nom (car si seule la variable
inconnue est passée, c'est vraiment trivial !).

On peut faire, dans "monlien.php" :

<?php
$noms_connus = array( "nom1", "nom2, "nom3" );
foreach( $_GET as $nom => $valeur ) {
if( ! in_array( $nom, $noms_connus ) ) {
$nom_inconnu = $nom;
break;
}
}
?>

Attention par contre car, mal géré, ça peut ouvrir un vrai gouffre de
sécurité : tout ce que rajoutera l'utilisateur dans l'url pourra être
considéré comme la variable inconnue.

Cordialement,
Pascal
Olivier Miakinen
2009-04-06 10:10:47 UTC
Permalink
Post by Pascal PONCET
[...]
Alors, admettons que plusieurs variables soient passées dans l'url, dont
une pour laquelle on ne connait pas le nom (car si seule la variable
inconnue est passée, c'est vraiment trivial !).
<?php
$noms_connus = array( "nom1", "nom2, "nom3" );
foreach( $_GET as $nom => $valeur ) {
if( ! in_array( $nom, $noms_connus ) ) {
$nom_inconnu = $nom;
break;
}
}
?>
Oui. Je n'en vois toujours pas l'utilité (cela, seul Pascal sans-nom
pourrait nous le dire), mais on peut effectivement faire un truc de ce
genre.
Post by Pascal PONCET
Attention par contre car, mal géré, ça peut ouvrir un vrai gouffre de
sécurité : tout ce que rajoutera l'utilisateur dans l'url pourra être
considéré comme la variable inconnue.
Là je me permets de ne pas être d'accord. Plus exactement, je suis
d'accord avec « mal géré ça peut ouvrir un vrai gouffre de sécurité »,
mais ceci est parfaitement indépendant du fait que la variable ait ou
non été lue avec un nom connu à l'avance. Ce qui compte en l'occurrence
ce n'est pas comment s'appelait la variable dans la requête, mais ce
qu'on en fait, et si oui ou non on applique les bons tests de vérifi-
cation de sa valeur avant d'utiliser cette valeur.

Loading...