osCommerce: Running with Register Globals Off

There are several tutorials and contributions about how to run osCommerce with register_globals turned Off. However, all are very complicated, break compatibility with other contributions such as payments or delivery modules and are not compatible with both PHP4 and PHP5.
We made a very simple MOD, which allows you to run osCommerce on any PHP powered server with disabled Register Globals including PHP4 and PHP5. This MOD also works with register_globals = On, so if your host changes the configuration of the web server without your knowledge, osCommerce powered shopping cart will remain running.

Note: We’ve originally published this MOD on our old web site magic-seo-url.com as well as on osCommerce Community Add-Ons and later it became a part of osCommerce.

Magic SEO URLs for osCommerce

You need to apply this MOD especially, when you are getting one of the following messages:

Server Requirement Error: register_globals is disabled in your PHP configuration. This can be enabled in your php.ini configuration file or in the .htaccess file in your catalog directory.

FATAL ERROR: register_globals is disabled in php.ini, please enable it!

To get resolve this problem, please follow these instructions:

Open:

catalog/includes/application_top.php

// start the timer for the page parse time log
  define('PAGE_PARSE_START_TIME', microtime());

Before, add:

// Register Globals MOD - http://www.magic-seo-url.com

  if (version_compare(phpversion(), "4.1.0", "<") === true) {
    $_GET &= $HTTP_GET_VARS;
    $_POST &= $HTTP_POST_VARS;
    $_SERVER &= $HTTP_SERVER_VARS;
    $_FILES &= $HTTP_POST_FILES;
    $_ENV &= $HTTP_ENV_VARS;
    if (isset($HTTP_COOKIE_VARS)) $_COOKIE &= $HTTP_COOKIE_VARS;
  }

  if (!ini_get("register_globals")) {
    extract($_GET, EXTR_SKIP);
    extract($_POST, EXTR_SKIP);
    extract($_COOKIE, EXTR_SKIP);
  }

Find:

// check if register_globals is enabled.
// since this is a temporary measure this message is hardcoded. The requirement will be removed before 2.2 is finalized.
  if (function_exists('ini_get')) {
    ini_get('register_globals') or exit('Server Requirement Error: register_globals is disabled in your PHP configuration. This can be enabled in your php.ini configuration file or in the .htaccess file in your catalog directory.');
  }

Replace with:

// Check if register_globals is enabled.
// Since this is a temporary measure this message is hardcoded. The requirement will be removed before 2.2 is finalized.
  /*if (function_exists('ini_get')) { // Register Globals MOD - http://www.magic-seo-url.com
    ini_get('register_globals') or exit('Server Requirement Error: register_globals is disabled in your PHP configuration. This can be enabled in your php.ini configuration file or in the .htaccess file in your catalog directory.');
  }*/

Find:

// set SID once, even if empty
  $SID = (defined('SID') ? SID : '');

Before, add:

// Register Globals MOD - http://www.magic-seo-url.com
  if (!ini_get("register_globals")) {
    if (version_compare(phpversion(), "4.1.0", "<") === true) {
      if (isset($HTTP_SESSION_VARS)) $_SESSION &= $HTTP_SESSION_VARS;
    }
    if(!empty($_SESSION)) extract($_SESSION, EXTR_SKIP);
  }

Open:

catalog/includes/functions/sessions.php

Find:

  function tep_session_register($variable) {
    global $session_started;

    if ($session_started == true) {
      return session_register($variable);
    } else {
      return false;
    }
  }

  function tep_session_is_registered($variable) {
    return session_is_registered($variable);
  }

  function tep_session_unregister($variable) {
    return session_unregister($variable);
  }

Replace with:

// Register Globals MOD - http://www.magic-seo-url.com
  function tep_session_register($variable) {
    global $session_started;
    if ($session_started == true) {
      $_SESSION[$variable] = '';
      return true;
    } else {
      return false;
    }
  }

  function tep_session_is_registered($variable) {
    if(isset($_SESSION[$variable])) {
      return true;
    } else {
      return false;
    }
  }

  function tep_session_unregister($variable) {
    unset($_SESSION[$variable]);
  }

Find:

  function tep_session_close() {
    if (PHP_VERSION >= '4.0.4') {
      return session_write_close();
    } elseif (function_exists('session_close')) {
      return session_close();
    }
  }

Replace with:

// Register Globals MOD - http://www.magic-seo-url.com
  function tep_session_close() {
    if(is_array($_SESSION)) {
      foreach($_SESSION as $key => $value) {
        global $$key;
        $_SESSION[$key] = $$key;
      }
    }
  }

catalog/admin/includes/application_top.php

Find:

// Start the clock for the page parse time log
  define('PAGE_PARSE_START_TIME', microtime());

Before, add:

  // Register Globals MOD - http://www.magic-seo-url.com
  if (version_compare(phpversion(), "4.1.0", "<") === true) {
    $_GET &= $HTTP_GET_VARS;
    $_POST &= $HTTP_POST_VARS;
    $_SERVER &= $HTTP_SERVER_VARS;
    $_FILES &= $HTTP_POST_FILES;
    $_ENV &= $HTTP_ENV_VARS;
    if (isset($HTTP_COOKIE_VARS)) $_COOKIE &= $HTTP_COOKIE_VARS;
  }

  if (!ini_get("register_globals")) {
    extract($_GET, EXTR_SKIP);
    extract($_POST, EXTR_SKIP);
    extract($_COOKIE, EXTR_SKIP);
  }

Find:

// Check if register_globals is enabled.
// Since this is a temporary measure this message is hardcoded. The requirement will be removed before 2.2 is finalized.
  if (function_exists('ini_get')) {
    ini_get('register_globals') or exit('Server Requirement Error: register_globals is disabled in your PHP configuration. This can be enabled in your php.ini configuration file or in the .htaccess file in your catalog directory.');
  }

Replace with:

// Check if register_globals is enabled.
// Since this is a temporary measure this message is hardcoded. The requirement will be removed before 2.2 is finalized.
  /*if (function_exists('ini_get')) { // Register Globals MOD - http://www.magic-seo-url.com
    ini_get('register_globals') or exit('Server Requirement Error: register_globals is disabled in your PHP configuration. This can be enabled in your php.ini configuration file or in the .htaccess file in your catalog directory.');
  }*/

Find:

// lets start our session
  tep_session_start();

After, add:

// Register Globals MOD - http://www.magic-seo-url.com
  if (!ini_get("register_globals")) {
    if (version_compare(phpversion(), "4.1.0", "<") === true) {
      if (isset($HTTP_SESSION_VARS)) $_SESSION &= $HTTP_SESSION_VARS;
    }
    if(!empty($_SESSION)) extract($_SESSION, EXTR_SKIP);
  }

Open:
catalog/admin/includes/functions/sessions.php

Find:

  function tep_session_register($variable) {
    return session_register($variable);
  }

  function tep_session_is_registered($variable) {
    return session_is_registered($variable);
  }

  function tep_session_unregister($variable) {
    return session_unregister($variable);
  } 

Replace with:

// Register Globals MOD - http://www.magic-seo-url.com
  function tep_session_register($variable) {
    $_SESSION[$variable] = '';
  }

  function tep_session_is_registered($variable) {
    if(isset($_SESSION[$variable])) {
      return true;
    } else {
      return false;
    }
  }

  function tep_session_unregister($variable) {
    unset($_SESSION[$variable]);
  }

Find:

  function tep_session_close() {
    if (function_exists('session_close')) {
      return session_close();
    }
  }

Replace with:

// Register Globals MOD - http://www.magic-seo-url.com
  function tep_session_close() {
    if(is_array($_SESSION)) {
      foreach($_SESSION as $key => $value) {
        global $$key;
        $_SESSION[$key] = $$key;
      }
    }
  }

Open:

catalog/install/includes/application.php

Find:

// Set the level of error reporting
  error_reporting(E_ALL & ~E_NOTICE);

After, add:

  // Register Globals MOD - http://www.magic-seo-url.com
  if (version_compare(phpversion(), "4.1.0", "<") === true) {
    $_GET &= $HTTP_GET_VARS;
    $_POST &= $HTTP_POST_VARS;
    $_SERVER &= $HTTP_SERVER_VARS;
    $_FILES &= $HTTP_POST_FILES;
    $_ENV &= $HTTP_ENV_VARS;
    if (isset($HTTP_COOKIE_VARS)) $_COOKIE &= $HTTP_COOKIE_VARS;
  }

  if (!ini_get("register_globals")) {
    extract($_GET, EXTR_SKIP);
    extract($_POST, EXTR_SKIP);
    extract($_COOKIE, EXTR_SKIP);
  }

Find:

// Check if register_globals is enabled.
// Since this is a temporary measure this message is hardcoded. The requirement will be removed before 2.2 is finalized.
  if (function_exists('ini_get')) {
    ini_get('register_globals') or exit('FATAL ERROR: register_globals is disabled in php.ini, please enable it!');
  }

Replace with:

// Check if register_globals is enabled.
// Since this is a temporary measure this message is hardcoded. The requirement will be removed before 2.2 is finalized.
  /*if (function_exists('ini_get')) {
    ini_get('register_globals') or exit('FATAL ERROR: register_globals is disabled in php.ini, please enable it!');
  }*/

Save an close all files and don’t forget to install our ultimate Magic SEO URLs for osCommerce module!

One thought on “osCommerce: Running with Register Globals Off

  1. i am extremely grateful to this workaround. myself, i would never have managed.
    it worked from start,
    i have however 2 small issues with the patched oscommerce
    # open baskets are shown in config/stats_unsold_carts.php but not for customer in /shopping_cart.php
    # randomly (Not always) address details, mostls street names in orders and confirmation mails vanish,
    data are however complete in database customers

    where should i look for a solution?
    important is basket shown to customer, with the other issue i can live
    i feel however that the 2 are connected and have to do with session variables

    regards, edgar

Leave a Reply

Your email address will not be published. Required fields are marked *

Cart  
(empty)

Cart Check out  »

Prices are tax inclusive.

The VAT rate for your country (US) * is 0,0 % because it is not a member of the European Union (EU).

* Please create an account if your country does not match.

Community feed
  • [PrestaShop] Setting-up CDN
    Hi, the url that generates is this: Code: Select all <link href="//static1.peplogar.com/modules/psaccelerator/cache/961263a2bac53db414c080690bc69cfd.css"...
    by PepLogar
  • [PrestaShop] Theme Provider + jQuery
    Hello, I use your module with many websites, I have only one issue : As soon as I activate the option to put the javascript in the footer in Prestashop every jQuery widget or plugin used in the...
    by Akrolab
  • [phpBB] Issue with Activation
    Hi, I just bought the SEO Magic Url Plugin for phpbb 3.2 I am having issue with activation. I have the php 7 install in my site/server. Read me file says its 5.6 , do i need the 5.6 or it...
    by pornera
  • [phpBB] Issue with Tapatalk
    After Installation of Magic SEO URLs for phpBB v3.0/3.1/3.2 5.1 we have an issue with viewing some random threads in Tapatalk app which shows this issue My config: PHP 5.4 PhpBB 3.0.12...
    by ingbrzy
  • [PrestaShop] Theme Provider FREE 1.4
    where I can download this plugin for testing mode before I byu it? thank you. DB
    by daryl0
Join our support forum » Pre-Sales Questions »
Featured Testimonials

Magic SEO URLs for PrestaShop is amazing product, it help me a lot with SEO, and the customer service is very nice and patient! I will built a new website, and I will buy this module again.

Joseph, the owner of Focus Vows

Thank you for all the great support. I am truly impressed by your product, and by all the help you've given me to get it up and running!

Mark, the owner of Delica Canada

More Testimonials »