Je travaille sur un framework qui utilise register_globals
. Ma version php locale est 5.4. Je sais que register_globals est déprécié depuis le PHP 5.3.0
et supprimé dans le PHP 5.4
. Mais je dois le faire fonctionner sur PHP 5.4
, y a-t-il un moyen? Toute aide ou suggestion sera très appréciable. Merci.
Vous pouvez émuler register_globals
en utilisant extract in global scope :
extract($_REQUEST);
Ou mettez-le en fonction indépendante en utilisant des variables globales et variables
function globaling()
{
foreach ($_REQUEST as $key => $val)
{
global ${$key};
${$key} = $val;
}
}
P.S. Je pense que vous avez publié une application et que vous ne voulez rien y changer.
Vous pouvez créer un fichier globals.php
avec
Puis ajoutez auto_prepend_file directive à .htaccess
php_value auto_prepend_file ./globals.php
Après cela, les globaux seront ajoutés à chaque appel
Juste au cas où cela pourrait être utile, voici le code suggéré sur php.net pour émuler register_globals sur:
<?php
// Emulate register_globals on
if (!ini_get('register_globals')) {
$superglobals = array($_SERVER, $_ENV,
$_FILES, $_COOKIE, $_POST, $_GET);
if (isset($_SESSION)) {
array_unshift($superglobals, $_SESSION);
}
foreach ($superglobals as $superglobal) {
extract($superglobal, EXTR_SKIP);
}
}
Source: http://php.net/manual/en/faq.misc.php#faq.misc.registerglobals
Dans le manuel PHP , il est indiqué que:
Cette fonctionnalité a été DEPRECÉE à partir de PHP 5.3.0 et SUPPRIMÉE à partir de PHP 5.4.0.
Cependant, une recherche Google a révélé cette méthode sur Forums Ubuntu :
Non, c'est finalement parti pour de bon. Quel que soit le site qui utilise encore les globals a eu quoi, un demi-douzaine d'années ou plus maintenant pour corriger le code?
La solution la plus rapide consiste à créer les globales à partir de zéro en exécutant ce code au début de l'application:
Code:
foreach ($_REQUEST as $key=>$val) {
${$key}=$val;
}
Vous devez faire attention à ce que toute variable créée de cette manière ne soit pas déjà définie dans le reste du script.
Vous pouvez forcer ce code à être exécuté avant chaque page du site par en utilisant la directive auto_prepend_file dans un fichier .htaccess.
Je vous recommande vivement de consulter le code qui nécessite register_globals
et de le modifier afin qu'il fonctionne correctement et qu'il est désactivé.
Dans php.ini avant:
auto_globals_jit = On
Après:
auto_globals_jit = Off