Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Transformer le nom d'une variable en chaine

6 réponses
Avatar
Pascal
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

6 réponses

Avatar
Olivier Miakinen
Bonjour,

Le 04/04/2009 00:06, Pascal a écrit :

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'



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
Avatar
Pascal PONCET
Pascal a écrit :
Par exemple j'ai une variable nommée $mavariable
et je souhaite récupérer la chaine suivante :
'$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)
Avatar
Pascal
Pascal a écrit :
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


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
Avatar
Olivier Miakinen
Le 05/04/2009 23:00, Pascal a écrit :

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'



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');
}

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



Je ne vois pas bien ce qu'on y gagne.
Avatar
Pascal PONCET
Pascal a écrit :
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
Avatar
Olivier Miakinen
Le 06/04/2009 11:36, Pascal PONCET a écrit :

[...]

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;
}
}
?>



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.

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.