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

Register globals / variables dynamiques

11 réponses
Avatar
angelique
Bonjour à tous,

Je rencontre le problème suivant :
mon hébergeur vient de passer les register globals à Off (très bien),
du coup je dois revoir le code de tous les anciens sites de la boîte
(que je n'ai pas programmés moi même) afin de redéclarer toutes les
variables POST, GET, SERVER ...etc.
Le problème est que je bosse sur un fichier dont les noms des
variables passées par POST sont créées dynamiquement et pas moyen de
faire autrement (à moins de reprogrammer la moitié du site sinon
tout).
Comment récupérer ces variables ?
Je ne vois aucune solution ! mais je suis débutante... peut être
qu'avec votre expérience vous auriez quelques suggestions à me faire ?
merci merci

angelica
/***** http://www.angelica-fashion.com/boutique *****/

10 réponses

1 2
Avatar
Thibaut Allender
angelica wrote:
mon hébergeur vient de passer les register globals à Off (très bien)


je trouve ca discutable mais bon

du coup je dois revoir le code de tous les anciens sites de la boîte
(que je n'ai pas programmés moi même) afin de redéclarer toutes les
variables POST, GET, SERVER ...etc.
Le problème est que je bosse sur un fichier dont les noms des
variables passées par POST sont créées dynamiquement et pas moyen de
faire autrement (à moins de reprogrammer la moitié du site sinon
tout).
Comment récupérer ces variables ?


euh, je ne comprends pas bien ce que tu veux dire par "un fichier dont
les noms des variables passées par POST sont créées dynamiquement"

mais a priori, tu peux simuler ce qui se passait avant comme ceci :

<?
foreach($_REQUEST as $k => $v) $$k = $v;
?>

le probleme c'est pour les array passés en post/get via un formulaire

enfin, tu peux tester si tu as affaire a un array ou pas avec qq chose
du genre :

<?
foreach($_REQUEST as $k => $v) {
if (!is_array($v)) $$k = $v;
else foreach($v as $k2 => $v2) $$k[$k2] = $v2;
}
?>

attention, c'est du "from scratch" non testé ;)

bon courage
a+

--
freelance + web design + php dev + digital photo
+ http://www.capsule.org

Avatar
Alexandre Havard
angelica wrote:

Comment récupérer ces variables ?


Bonjour,

Il te suffit de déclarer dans ton script que tu ne souhaites pas
utiliser les variables $_POST, $_GET, etc.

Tu peux pour ceci utiliser la fonction ini_set(); en déclarant dans
chaque script :

ini_set('register_globals', '0');

Ceci aura pour effet de passer register_globals sur ON.

A long terme, tu devrais cependant modifier tes scripts.

Cordialement,
Alexandre Havard

Avatar
Geoffrey Bachelet
tu peux utiliser import_request_variables
(http://fr.php.net/import_request_variables) en attendant d'avoir réécrit
ton site
pour les varibales dynamiques, il suffit d'utiliser tes noms de variables
comme indices du tableau $_POST non ?

"angelica" a écrit dans le message de news:

Bonjour à tous,

Je rencontre le problème suivant :
mon hébergeur vient de passer les register globals à Off (très bien),
du coup je dois revoir le code de tous les anciens sites de la boîte
(que je n'ai pas programmés moi même) afin de redéclarer toutes les
variables POST, GET, SERVER ...etc.
Le problème est que je bosse sur un fichier dont les noms des
variables passées par POST sont créées dynamiquement et pas moyen de
faire autrement (à moins de reprogrammer la moitié du site sinon
tout).
Comment récupérer ces variables ?
Je ne vois aucune solution ! mais je suis débutante... peut être
qu'avec votre expérience vous auriez quelques suggestions à me faire ?
merci merci

angelica
/***** http://www.angelica-fashion.com/boutique *****/


Avatar
Nicolas
Tu peux pour ceci utiliser la fonction ini_set(); en déclarant dans
chaque script :

ini_set('register_globals', '0');

Ceci aura pour effet de passer register_globals sur ON.



Le flag passe à ON, mais les variables ne seront toujours pas directement
accessibles.

En revanche, tu peux changer ce paramètre dans le php.ini (si tu y as accès)
ou dans un .htaccess à la racine de ton site (si le serveur les prend en
compte).

Nicolas

Avatar
Ampac
Dans news:bnm8li$6ac$,
Nicolas a dit :

En revanche, tu peux changer ce paramètre dans le php.ini (si tu y as
accès) ou dans un .htaccess à la racine de ton site (si le serveur
les prend en compte).


Et qu'est-ce que tu spécifies dans le HTACCESS pour repasser le
REGISTER_GLOBALS à ON ?

Merci

--
Ampac

Avatar
Nicolas
Et qu'est-ce que tu spécifies dans le HTACCESS pour repasser le
REGISTER_GLOBALS à ON ?


php_flag register_globals on

Nicolas

Avatar
Nicolas
Autre approche avec la fonction import_request_variables

http://www.php.net/manual/en/function.import-request-variables.php

Nicolas
Avatar
angelique
Merci à tous pour vos réponses !
Finalement je fais la chose suivante :
En haut de mes pages j'extrais tout simplement toutes les variables
passees par POST ou par GET de la manière suivante :
extract ($_POST);
extract ($_GET);

et les cookies ou variables serveurs de la même façon si besoin... du
coup, il me récupère toutes les variables passées.
Je ne suis pas sûre qu'il s'agisse là de la meilleure solution mais
c'est bien la seule que j'ai trouvée. J'ai essayé les boucles foreach
mais rien à faire... bon, faut dire que je suis vraiment débutante
alors...

Sinon pour ce qui est de me retaper le code des 3 sites à mettre à
jour, il n'en est pas question. Le code est réellement illisible !

merci encore

angelica
/***** http://www.angelica-fashion.com/boutique *****/
Avatar
Geoffrey Bachelet
En haut de mes pages j'extrais tout simplement toutes les variables
passees par POST ou par GET de la manière suivante :
extract ($_POST);
extract ($_GET);


heu...
pourquoi t'embeter a utiliser extract() sur chaque $_* alors que
import_request_variables(GPC); le fait très bien ?

Avatar
angelique
heu...
pourquoi t'embeter a utiliser extract() sur chaque $_* alors que
import_request_variables(GPC); le fait très bien ?


ah ?! ben... paske je connaissais pas. Mais merci beaucoup pour l'info !
C'est bien pratique tout ça !

angelica
/***** http://www.angelica-fashion.com *****/

1 2