Déclaration de variable dynamiquement (register_global)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 161 fois - Téléchargée 25 fois

Contenu du snippet

Si vous développez votre site chez vous et que vous avez l'habitude de récuperer vos variable directement sans allé la chercher dans le table $_POST[].
par exemple votre formulaire contient les champs : "nom" et "prenom"
pour y acceder soit vous faites $_POST['nom'] et $_POST['prenom']
si par contre vous voulez les recuperer directement dans une variable $nom et $prenom il vous faut configurer votre serveur php en mettant register_global=on
par contre si vous ne pouvez pas modifier la conf alors cette source pourra vous etre utile !!

Source / Exemple :


<?php
// le register global
// on limite la déclaration des variables à celle qui sont dans le tableau

$var_get = array("var1","var2","var3","var4");
// pour le get
foreach($_GET as $key => $val)
     if ( in_array($key, $var_get))
         ${$key} = $val;

$var_post = array("var1","var2","var3","var4");

// pour le post
foreach($_POST as $key => $val)
     if ( in_array($key, $var_post))
        ${$key} = $val;

?>

Conclusion :


Cette source vous permet de voir comment allouer des variables dynamiquement. J'avoue que l'on en a pas tout les jours grand besoin mais on sait jamais.

A voir également

Ajouter un commentaire

Commentaires

cs_Kirua
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008
-
register_global=on c'est dire au monde entier que tu t'en fiches de te faire hacker, et que d'ailleurs tu trouves l'idée assez amusante pr ne pas t'en préoccuper :-)

franchement, imaginez un truc comme ça:

if($motdepasse $users['utilisateur']) $ok true;

if($ok)
{
//afficher des données importantes, privées
}


si regiter globals est on, appeler la page en ajouter /?ok=true à l'adresse permet de passer à travers le teste de mot de passe, d'un coup. c'est pas uen bonne idée
cs_koko
Messages postés
654
Date d'inscription
lundi 14 janvier 2002
Statut
Membre
Dernière intervention
20 février 2005
-
tu recrées la faille bouchée par le register_global a off...
tu pourrais modifier ton code pour afficher les $_POST et les $_GET a mettre !!
donc dans un form, tu mets l'adresse d'une page rg.php (registerglobal) et alors de la, tu affiches les champs $_POST, $_GET
donc ca fera :

$nick = $_POST['nick'];
$email = $_POST['email'];
...
tu copies alors dans ta page php et tu dois pas tout faire a la main !!
cs_gege217
Messages postés
40
Date d'inscription
jeudi 23 janvier 2003
Statut
Membre
Dernière intervention
13 août 2008
-
T'as aussi une fonction prévue spécialement pour ca !

import_request_variables();

plus d'infos sur => http://fr3.php.net/import_request_variables

Des fois ca sert de regarder la doc...

.oOMimiLOo.
rejnev
Messages postés
15
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
16 février 2004
-
ouh ouh doucement les gars!!!
moi je cherché à déclarer des variables dynamiquement, apres l'avoir trouver dans la docs. J'ai fait l'analogie avec le problème que j'ai rencontré lorsque j'ai commencé à programmé.
Je suis tout a fait d'accord que c'est une faille de sécurité énorme, j'y avait déja réfléchi et j'aurai du l'écrire en majuscule dans la description de cette source. De plus si tu regarde bien cette source n'est pas dans la rubrique sécurité mias plutot astuce !! ça m'a déja servit pour faire un petit site a la con, alors pourquoi pas quelqu'un d'autre, et puis ca fait un exemple concret pour la déclaration de variable dynamiquement!!!

@+
rejnev
Messages postés
15
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
16 février 2004
-
allez pour vous faire plaisir on peut le modifier pour le rendre un peut plus sécurisé :

$var_post = array("var1","var2","var3","var4");

// pour le post
foreach($_POST as $key => $val)
if ( in_array($key, $var_post))
${$key} = $val;

$var_get = array("var1","var2","var3","var4");
// pour le get
foreach($_GET as $key => $val)
if ( in_array($key, $var_get))
${$key} = $val;

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.