cvs: pear /PHP_Compat/Compat/Environment register_globals_on.php
| From: | Arpad Ray | 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