cvs: pear /PHP_Compat/Compat/Environment register_globals_on.php

From: Date: Sat, 18 Mar 2006 12:13:53 +0000
Subject: cvs: pear /PHP_Compat/Compat/Environment register_globals_on.php
Groups: php.pear.cvs 
Request: Send a blank email to pear-cvs+get-39181@lists.php.net to get a copy of this message
arpad Sat Mar 18 12:13:53 2006 UTC Modified files: /pear/PHP_Compat/Compat/Environment register_globals_on.php Log: better protection against overwriting superglobals register session not server fixed files for get requests http://cvs.php.net/viewcvs.cgi/pear/PHP_Compat/Compat/Environment/register_globals_on.php?r1=1.2&r2=1.3&diff_format=u Index: pear/PHP_Compat/Compat/Environment/register_globals_on.php diff -u pear/PHP_Compat/Compat/Environment/register_globals_on.php:1.2 pear/PHP_Compat/Compat/Environment/register_globals_on.php:1.3 --- pear/PHP_Compat/Compat/Environment/register_globals_on.php:1.2 Thu Dec 29 09:02:48 2005 +++ pear/PHP_Compat/Compat/Environment/register_globals_on.php Sat Mar 18 12:13:53 2006 @@ -16,7 +16,7 @@ // | Arpad Ray <arpad@php.net> | // +----------------------------------------------------------------------+ // -// $Id: register_globals_on.php,v 1.2 2005/12/29 09:02:48 arpad Exp $ +// $Id: register_globals_on.php,v 1.3 2006/03/18 12:13:53 arpad Exp $ /** @@ -24,42 +24,44 @@ * * @category PHP * @package PHP_Compat - * @link http://php.net/magic_qutoes + * @link http://php.net/register_globals * @author Aidan Lister <aidan@php.net> * @author Arpad Ray <arpad@php.net> - * @version $Revision: 1.2 $ + * @version $Revision: 1.3 $ */ if (!ini_get('register_globals')) { $superglobals = array( - 'S' => &$_SERVER, - 'E' => &$_ENV, - 'C' => &$_COOKIE, - 'P' => &$_POST, - 'G' => &$_GET + 'S' => '_SESSION', + 'E' => '_ENV', + 'C' => '_COOKIE', + 'P' => '_POST', + 'G' => '_GET' ); $order = ini_get('variables_order'); $order_length = strlen($order); $inputs = array(); - - // add the specified superglobals in order + + // determine on which arrays to operate and in what order for ($i = 0; $i < $order_length; $i++) { $key = strtoupper($order[$i]); - if (isset($superglobals[$key])) { - if ($key == 'S' && !isset($_SESSION)) { - continue; - } - if (($key == 'G' || $key == 'P') && strtoupper($_SERVER['REQUEST_METHOD'][0]) == $key) { - $inputs[] =& $_FILES; - } - $inputs[] =& $superglobals[$key]; + if (!isset($superglobals[$key]) + || ($key == 'S' && !isset($_SESSION))) { + continue; } + if ($key == 'P' && $_SERVER['REQUEST_METHOD'] == 'POST') { + $inputs[] = $_FILES; + } + $inputs[] = ${$superglobals[$key]}; } - foreach ($inputs as $input) { - if (isset($input['GLOBALS'])) { - continue; + // extract the specified arrays + $superglobals[] = 'GLOBALS'; + for ($i = 0, $c = count($inputs); $i < $c; $i++) { + // ensure users can't set superglobals + $ins = array_intersect($superglobals, array_keys($inputs[$i])); + if (empty($ins)) { + extract($inputs[$i]); } - extract($input); } // Register the change

« previous php.pear.cvs (#39181) next »