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

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
  • [Zen Cart] Can't execute Magic SEO URLs sitemaps
    I installed Magic SEO URLs Sitemaps Add-On for ZenCart MSU4.x/MSU5.x 2.0 on my server, when I try to generate sitemaps using: https://www.pechesudv155.owally.com/sitemaps.php I received :...
    by peter@pechesud.com
  • [phpBB3] Sharing users between phpBB / PrestaShop
    Hi i have 2 question 1- prestashop module support phpBB 3.3 ? 2- why we can not login in prestashop and phpbb with same user?
    by zohall
  • [phpBB3] AJAX Userinfo Extension
    Hi! I'm having trouble with this extension: https://www.phpbb.com/customise/db/exte ... _userinfo/ I tried asking support from the author but for no avail, since now. My request for support...
    by Lord Phobos
  • [phpBB3] Upgrade to phpBB 3.2.3
    Hello.. after Upgrade to phpBB 3.2.3 I am getting this message.. How can I solve this issue..? Thank you
    by ingbrzy
  • [phpBB3] URL path changed
    Hello.. I have changed my site path after moving to new hosting and now can not activate SEO module.. new path http://www.miuios.cz/domains/miuios.cz/ could you help me? thank you
    by ingbrzy2
Join our support forum » Pre-Sales Questions »
Featured Testimonials

Guys, thank you for all your support, you've been absolutely amazing! Please feel free to use this as a review on your website.

Veronica, the owner of Rave Kit

Magic SEO URLs have helped me to get the number one spot on Yahoo for a number of my products. One of them has 1,800,000 hits, but I'm number one!

Todd, the owner of UpStart Battery

More Testimonials »