note 124550 deleted from security.globals by cmb

From: Date: Sat, 28 Dec 2019 07:01:13 +0000
Subject: note 124550 deleted from security.globals by cmb
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-213644@lists.php.net to get a copy of this message
Note Submitter: Schnorxelkuh ---- I've picked up some ideas and put some own stuff to get a replacement for missing register_globals and missing session functions. Code now also works with multidimensional array and builds globals from a session. To get the code to work use auto_prepend_file on php.ini to specify the file containing the code below. E.g.: auto_prepend_file = /srv/www/php/.auto_prepend.php.inc You should have runkit extension from PECL installed and the following entries on your php.ini: extension_dir = <your extension dir> extension = runkit.so runkit.internal_override = On <?php //Fix for removed session functions if (!function_exists('session_register')) { function session_register() { $register_vars = func_get_args(); foreach ($register_vars as $var_name) { $_SESSION[$var_name] = $GLOBALS[$var_name]; if (!ini_get('register_globals')) { $GLOBALS[$var_name] = &$_SESSION[$var_name]; } } } function session_is_registered($var_name) { return isset($_SESSION[$var_name]); } function session_unregister($var_name) { unset($_SESSION[$var_name]); } } //Fix for removed function register_globals if (!isset($PXM_REG_GLOB)) { $PXM_REG_GLOB=1; if (!ini_get('register_globals')) { if (isset($_REQUEST)) { extract($_REQUEST); } if (isset($_SERVER)) { extract($_SERVER); } //$_SESSION globals must be registred with call of session_start() // Best option - Catch session_start call - Runkit extension from PECL must be present if (extension_loaded("runkit")) { if (!function_exists('session_start_default')) { runkit_function_rename("session_start", "session_start_default"); } if (!function_exists('session_start')) { function session_start($options=null) { $return=session_start_default($options); if (isset($_SESSION)) { $var_names=array_keys($_SESSION); foreach($var_names as $var_name) { $GLOBALS[$var_name]=&$_SESSION[$var_name]; } } return $return; } } } // Second best option - Will always extract $_SESSION if session cookie is present. elseif ($_COOKIE["PHPSESSID"]) { session_start(); if (isset($_SESSION)) { $var_names=array_keys($_SESSION); foreach($var_names as $var_name) { $GLOBALS[$var_name]=&$_SESSION[$var_name]; } } } } } ?>

« previous php.notes (#213644) next »