webberman Posted May 1, 2007 Share Posted May 1, 2007 ok that seems fine, Can you post your catalog\includes\application_top.php <?php /* $Id: application_top.php,v 1.280 2003/07/12 09:38:07 hpdl Exp $ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright © 2003 osCommerce Released under the GNU General Public License */ //-MS- SEO-G Added if( !isset($g_seo_flag) || $g_seo_flag !== true) { // start the timer for the page parse time log define('PAGE_PARSE_START_TIME', microtime()); // set the level of error reporting error_reporting(E_ALL & ~E_NOTICE); // 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!'); } // Set the local configuration parameters - mainly for developers if (file_exists('includes/local/configure.php')) include('includes/local/configure.php'); // include server parameters require('includes/configure.php'); if (strlen(DB_SERVER) < 1) { if (is_dir('install')) { header('Location: install/index.php'); } } // define the project version define('PROJECT_VERSION', 'osCommerce 2.2-MS2'); // set the type of request (secure or not) $request_type = (stristr(getenv('HTTP_X_FORWARDED_HOST'), ".sslpowered.com")) ? 'SSL' : 'NONSSL'; // set php_self in the local scope if (!isset($PHP_SELF)) $PHP_SELF = $HTTP_SERVER_VARS['PHP_SELF']; if ($request_type == 'NONSSL') { define('DIR_WS_CATALOG', DIR_WS_HTTP_CATALOG); } else { define('DIR_WS_CATALOG', DIR_WS_HTTPS_CATALOG); } // include the list of project filenames require(DIR_WS_INCLUDES . 'filenames.php'); // include the list of project database tables require(DIR_WS_INCLUDES . 'database_tables.php'); // customization for the design layout define('BOX_WIDTH', 125); // how wide the boxes should be in pixels (default: 125) // include the database functions require(DIR_WS_FUNCTIONS . 'database.php'); // make a connection to the database... now tep_db_connect() or die('Unable to connect to database server!'); // set the application parameters $configuration_query = tep_db_query('select configuration_key as cfgKey, configuration_value as cfgValue from ' . TABLE_CONFIGURATION); while ($configuration = tep_db_fetch_array($configuration_query)) { define($configuration['cfgKey'], $configuration['cfgValue']); } //-MS- SEO URLs Support Added require(DIR_WS_CLASSES . 'seo_url.php'); $g_seo_url = new seoURL; //-MS- SEO URLs Support Added EOM } //-MS- SEO-G Added EOM // if gzip_compression is enabled, start to buffer the output if ( (GZIP_COMPRESSION == 'true') && ($ext_zlib_loaded = extension_loaded('zlib')) && (PHP_VERSION >= '4') ) { if (($ini_zlib_output_compression = (int)ini_get('zlib.output_compression')) < 1) { if (PHP_VERSION >= '4.0.4') { ob_start('ob_gzhandler'); } else { include(DIR_WS_FUNCTIONS . 'gzip_compression.php'); ob_start(); ob_implicit_flush(); } } else { ini_set('zlib.output_compression_level', GZIP_LEVEL); } } // set the HTTP GET parameters manually if search_engine_friendly_urls is enabled if (SEARCH_ENGINE_FRIENDLY_URLS == 'true') { if (strlen(getenv('PATH_INFO')) > 1) { $GET_array = array(); $PHP_SELF = str_replace(getenv('PATH_INFO'), '', $PHP_SELF); $vars = explode('/', substr(getenv('PATH_INFO'), 1)); for ($i=0, $n=sizeof($vars); $i<$n; $i++) { if (strpos($vars[$i], '[]')) { $GET_array[substr($vars[$i], 0, -2)][] = $vars[$i+1]; } else { $HTTP_GET_VARS[$vars[$i]] = $vars[$i+1]; } $i++; } if (sizeof($GET_array) > 0) { while (list($key, $value) = each($GET_array)) { $HTTP_GET_VARS[$key] = $value; } } } } // define general functions used application-wide require(DIR_WS_FUNCTIONS . 'general.php'); require(DIR_WS_FUNCTIONS . 'html_output.php'); // set the cookie domain $cookie_domain = (($request_type == 'NONSSL') ? HTTP_COOKIE_DOMAIN : HTTPS_COOKIE_DOMAIN); $cookie_path = (($request_type == 'NONSSL') ? HTTP_COOKIE_PATH : HTTPS_COOKIE_PATH); // include cache functions if enabled if (USE_CACHE == 'true') include(DIR_WS_FUNCTIONS . 'cache.php'); // include shopping cart class require(DIR_WS_CLASSES . 'shopping_cart.php'); // include navigation history class require(DIR_WS_CLASSES . 'navigation_history.php'); // some code to solve compatibility issues require(DIR_WS_FUNCTIONS . 'compatibility.php'); // check if sessions are supported, otherwise use the php3 compatible session class if (!function_exists('session_start')) { define('PHP_SESSION_NAME', 'osCsid'); define('PHP_SESSION_PATH', $cookie_path); define('PHP_SESSION_DOMAIN', $cookie_domain); define('PHP_SESSION_SAVE_PATH', SESSION_WRITE_DIRECTORY); include(DIR_WS_CLASSES . 'sessions.php'); } // define how the session functions will be used require(DIR_WS_FUNCTIONS . 'sessions.php'); // set the session name and save path tep_session_name('osCsid'); tep_session_save_path(SESSION_WRITE_DIRECTORY); // set the session cookie parameters if (function_exists('session_set_cookie_params')) { session_set_cookie_params(0, $cookie_path, $cookie_domain); } elseif (function_exists('ini_set')) { ini_set('session.cookie_lifetime', '0'); ini_set('session.cookie_path', $cookie_path); ini_set('session.cookie_domain', $cookie_domain); } // set the session ID if it exists if (isset($HTTP_POST_VARS[tep_session_name()])) { tep_session_id($HTTP_POST_VARS[tep_session_name()]); } elseif ( ($request_type == 'SSL') && isset($HTTP_GET_VARS[tep_session_name()]) ) { tep_session_id($HTTP_GET_VARS[tep_session_name()]); } // start the session $session_started = false; if (SESSION_FORCE_COOKIE_USE == 'True') { tep_setcookie('cookie_test', 'please_accept_for_session', time()+60*60*24*30, $cookie_path, $cookie_domain); if (isset($HTTP_COOKIE_VARS['cookie_test'])) { tep_session_start(); $session_started = true; } } elseif (SESSION_BLOCK_SPIDERS == 'True') { $user_agent = strtolower(getenv('HTTP_USER_AGENT')); $spider_flag = false; if (tep_not_null($user_agent)) { $spiders = file(DIR_WS_INCLUDES . 'spiders.txt'); for ($i=0, $n=sizeof($spiders); $i<$n; $i++) { if (tep_not_null($spiders[$i])) { if (is_integer(strpos($user_agent, trim($spiders[$i])))) { $spider_flag = true; break; } } } } if ($spider_flag == false) { tep_session_start(); $session_started = true; } } else { tep_session_start(); $session_started = true; } // set SID once, even if empty $SID = (defined('SID') ? SID : ''); // verify the ssl_session_id if the feature is enabled if ( ($request_type == 'SSL') && (SESSION_CHECK_SSL_SESSION_ID == 'True') && (ENABLE_SSL == true) && ($session_started == true) ) { $ssl_session_id = getenv('SSL_SESSION_ID'); if (!tep_session_is_registered('SSL_SESSION_ID')) { $SESSION_SSL_ID = $ssl_session_id; tep_session_register('SESSION_SSL_ID'); } if ($SESSION_SSL_ID != $ssl_session_id) { tep_session_destroy(); tep_redirect(tep_href_link(FILENAME_SSL_CHECK)); } } // verify the browser user agent if the feature is enabled if (SESSION_CHECK_USER_AGENT == 'True') { $http_user_agent = getenv('HTTP_USER_AGENT'); if (!tep_session_is_registered('SESSION_USER_AGENT')) { $SESSION_USER_AGENT = $http_user_agent; tep_session_register('SESSION_USER_AGENT'); } if ($SESSION_USER_AGENT != $http_user_agent) { tep_session_destroy(); tep_redirect(tep_href_link(FILENAME_LOGIN)); } } // verify the IP address if the feature is enabled if (SESSION_CHECK_IP_ADDRESS == 'True') { $ip_address = tep_get_ip_address(); if (!tep_session_is_registered('SESSION_IP_ADDRESS')) { $SESSION_IP_ADDRESS = $ip_address; tep_session_register('SESSION_IP_ADDRESS'); } if ($SESSION_IP_ADDRESS != $ip_address) { tep_session_destroy(); tep_redirect(tep_href_link(FILENAME_LOGIN)); } } // create the shopping cart & fix the cart if necesary if (tep_session_is_registered('cart') && is_object($cart)) { if (PHP_VERSION < 4) { $broken_cart = $cart; $cart = new shoppingCart; $cart->unserialize($broken_cart); } } else { tep_session_register('cart'); $cart = new shoppingCart; } // include currencies class and create an instance require(DIR_WS_CLASSES . 'currencies.php'); $currencies = new currencies(); // include the mail classes require(DIR_WS_CLASSES . 'mime.php'); require(DIR_WS_CLASSES . 'email.php'); // set the language if (!tep_session_is_registered('language') || isset($HTTP_GET_VARS['language'])) { if (!tep_session_is_registered('language')) { tep_session_register('language'); tep_session_register('languages_id'); } include(DIR_WS_CLASSES . 'language.php'); $lng = new language(); if (isset($HTTP_GET_VARS['language']) && tep_not_null($HTTP_GET_VARS['language'])) { $lng->set_language($HTTP_GET_VARS['language']); } else { $lng->get_browser_language(); } $language = $lng->language['directory']; $languages_id = $lng->language['id']; } // include the language translations require(DIR_WS_LANGUAGES . $language . '.php'); // currency if (!tep_session_is_registered('currency') || isset($HTTP_GET_VARS['currency']) || ( (USE_DEFAULT_LANGUAGE_CURRENCY == 'true') && (LANGUAGE_CURRENCY != $currency) ) ) { if (!tep_session_is_registered('currency')) tep_session_register('currency'); if (isset($HTTP_GET_VARS['currency'])) { if (!$currency = tep_currency_exists($HTTP_GET_VARS['currency'])) $currency = (USE_DEFAULT_LANGUAGE_CURRENCY == 'true') ? LANGUAGE_CURRENCY : DEFAULT_CURRENCY; } else { $currency = (USE_DEFAULT_LANGUAGE_CURRENCY == 'true') ? LANGUAGE_CURRENCY : DEFAULT_CURRENCY; } } // navigation history if (tep_session_is_registered('navigation')) { if (PHP_VERSION < 4) { $broken_navigation = $navigation; $navigation = new navigationHistory; $navigation->unserialize($broken_navigation); } } else { tep_session_register('navigation'); $navigation = new navigationHistory; } $navigation->add_current_page(); // Shopping cart actions if (isset($HTTP_GET_VARS['action'])) { // redirect the customer to a friendly cookie-must-be-enabled page if cookies are disabled if ($session_started == false) { tep_redirect(tep_href_link(FILENAME_COOKIE_USAGE)); } if (DISPLAY_CART == 'true') { $goto = FILENAME_SHOPPING_CART; $parameters = array('action', 'cPath', 'products_id', 'pid'); } else { $goto = basename($PHP_SELF); if ($HTTP_GET_VARS['action'] == 'buy_now') { $parameters = array('action', 'pid', 'products_id'); } else { $parameters = array('action', 'pid'); } } switch ($HTTP_GET_VARS['action']) { // customer wants to update the product quantity in their shopping cart case 'update_product' : for ($i=0, $n=sizeof($HTTP_POST_VARS['products_id']); $i<$n; $i++) { if (in_array($HTTP_POST_VARS['products_id'][$i], (is_array($HTTP_POST_VARS['cart_delete']) ? $HTTP_POST_VARS['cart_delete'] : array()))) { $cart->remove($HTTP_POST_VARS['products_id'][$i]); } else { if (PHP_VERSION < 4) { // if PHP3, make correction for lack of multidimensional array. reset($HTTP_POST_VARS); while (list($key, $value) = each($HTTP_POST_VARS)) { if (is_array($value)) { while (list($key2, $value2) = each($value)) { if (ereg ("(.*)\]\[(.*)", $key2, $var)) { $id2[$var[1]][$var[2]] = $value2; } } } } $attributes = ($id2[$HTTP_POST_VARS['products_id'][$i]]) ? $id2[$HTTP_POST_VARS['products_id'][$i]] : ''; } else { $attributes = ($HTTP_POST_VARS['id'][$HTTP_POST_VARS['products_id'][$i]]) ? $HTTP_POST_VARS['id'][$HTTP_POST_VARS['products_id'][$i]] : ''; } $cart->add_cart($HTTP_POST_VARS['products_id'][$i], $HTTP_POST_VARS['cart_quantity'][$i], $attributes, false); } } tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters))); break; // customer adds a product from the products page case 'add_product' : if (isset($HTTP_POST_VARS['products_id']) && is_numeric($HTTP_POST_VARS['products_id'])) { $cart->add_cart($HTTP_POST_VARS['products_id'], $cart->get_quantity(tep_get_uprid($HTTP_POST_VARS['products_id'], $HTTP_POST_VARS['id']))+1, $HTTP_POST_VARS['id']); } tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters))); break; // performed by the 'buy now' button in product listings and review page case 'buy_now' : if (isset($HTTP_GET_VARS['products_id'])) { if (tep_has_product_attributes($HTTP_GET_VARS['products_id'])) { tep_redirect(tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $HTTP_GET_VARS['products_id'])); } else { $cart->add_cart($HTTP_GET_VARS['products_id'], $cart->get_quantity($HTTP_GET_VARS['products_id'])+1); } } tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters))); break; case 'notify' : if (tep_session_is_registered('customer_id')) { if (isset($HTTP_GET_VARS['products_id'])) { $notify = $HTTP_GET_VARS['products_id']; } elseif (isset($HTTP_GET_VARS['notify'])) { $notify = $HTTP_GET_VARS['notify']; } elseif (isset($HTTP_POST_VARS['notify'])) { $notify = $HTTP_POST_VARS['notify']; } else { tep_redirect(tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action', 'notify')))); } if (!is_array($notify)) $notify = array($notify); for ($i=0, $n=sizeof($notify); $i<$n; $i++) { $check_query = tep_db_query("select count(*) as count from " . TABLE_PRODUCTS_NOTIFICATIONS . " where products_id = '" . $notify[$i] . "' and customers_id = '" . $customer_id . "'"); $check = tep_db_fetch_array($check_query); if ($check['count'] < 1) { tep_db_query("insert into " . TABLE_PRODUCTS_NOTIFICATIONS . " (products_id, customers_id, date_added) values ('" . $notify[$i] . "', '" . $customer_id . "', now())"); } } tep_redirect(tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action', 'notify')))); } else { $navigation->set_snapshot(); tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL')); } break; case 'notify_remove' : if (tep_session_is_registered('customer_id') && isset($HTTP_GET_VARS['products_id'])) { $check_query = tep_db_query("select count(*) as count from " . TABLE_PRODUCTS_NOTIFICATIONS . " where products_id = '" . $HTTP_GET_VARS['products_id'] . "' and customers_id = '" . $customer_id . "'"); $check = tep_db_fetch_array($check_query); if ($check['count'] > 0) { tep_db_query("delete from " . TABLE_PRODUCTS_NOTIFICATIONS . " where products_id = '" . $HTTP_GET_VARS['products_id'] . "' and customers_id = '" . $customer_id . "'"); } tep_redirect(tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action')))); } else { $navigation->set_snapshot(); tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL')); } break; case 'cust_order' : if (tep_session_is_registered('customer_id') && isset($HTTP_GET_VARS['pid'])) { if (tep_has_product_attributes($HTTP_GET_VARS['pid'])) { tep_redirect(tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $HTTP_GET_VARS['pid'])); } else { $cart->add_cart($HTTP_GET_VARS['pid'], $cart->get_quantity($HTTP_GET_VARS['pid'])+1); } } tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters))); break; } } // include the who's online functions require(DIR_WS_FUNCTIONS . 'whos_online.php'); tep_update_whos_online(); // include the password crypto functions require(DIR_WS_FUNCTIONS . 'password_funcs.php'); // include validation functions (right now only email address) require(DIR_WS_FUNCTIONS . 'validations.php'); // split-page-results require(DIR_WS_CLASSES . 'split_page_results.php'); // infobox require(DIR_WS_CLASSES . 'boxes.php'); // auto activate and expire banners require(DIR_WS_FUNCTIONS . 'banner.php'); tep_activate_banners(); tep_expire_banners(); // auto expire special products require(DIR_WS_FUNCTIONS . 'specials.php'); tep_expire_specials(); // calculate category path if (isset($HTTP_GET_VARS['cPath'])) { $cPath = $HTTP_GET_VARS['cPath']; } elseif (isset($HTTP_GET_VARS['products_id']) && !isset($HTTP_GET_VARS['manufacturers_id'])) { $cPath = tep_get_product_path($HTTP_GET_VARS['products_id']); } else { $cPath = ''; } if (tep_not_null($cPath)) { $cPath_array = tep_parse_category_path($cPath); $cPath = implode('_', $cPath_array); $current_category_id = $cPath_array[(sizeof($cPath_array)-1)]; } else { $current_category_id = 0; } // include the breadcrumb class and start the breadcrumb trail require(DIR_WS_CLASSES . 'breadcrumb.php'); $breadcrumb = new breadcrumb; $breadcrumb->add(HEADER_TITLE_TOP, HTTP_SERVER); $breadcrumb->add(HEADER_TITLE_CATALOG, tep_href_link(FILENAME_DEFAULT)); // add category names or the manufacturer name to the breadcrumb trail if (isset($cPath_array)) { for ($i=0, $n=sizeof($cPath_array); $i<$n; $i++) { $categories_query = tep_db_query("select categories_name from " . TABLE_CATEGORIES_DESCRIPTION . " where categories_id = '" . (int)$cPath_array[$i] . "' and language_id = '" . (int)$languages_id . "'"); if (tep_db_num_rows($categories_query) > 0) { $categories = tep_db_fetch_array($categories_query); $breadcrumb->add($categories['categories_name'], tep_href_link(FILENAME_DEFAULT, 'cPath=' . implode('_', array_slice($cPath_array, 0, ($i+1))))); } else { break; } } } elseif (isset($HTTP_GET_VARS['manufacturers_id'])) { $manufacturers_query = tep_db_query("select manufacturers_name from " . TABLE_MANUFACTURERS . " where manufacturers_id = '" . (int)$HTTP_GET_VARS['manufacturers_id'] . "'"); if (tep_db_num_rows($manufacturers_query)) { $manufacturers = tep_db_fetch_array($manufacturers_query); $breadcrumb->add($manufacturers['manufacturers_name'], tep_href_link(FILENAME_DEFAULT, 'manufacturers_id=' . $HTTP_GET_VARS['manufacturers_id'])); } } // add the products model to the breadcrumb trail if (isset($HTTP_GET_VARS['products_id'])) { $model_query = tep_db_query("select products_model from " . TABLE_PRODUCTS . " where products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "'"); if (tep_db_num_rows($model_query)) { $model = tep_db_fetch_array($model_query); $breadcrumb->add($model['products_model'], tep_href_link(FILENAME_PRODUCT_INFO, 'cPath=' . $cPath . '&products_id=' . $HTTP_GET_VARS['products_id'])); } } // initialize the message stack for output messages require(DIR_WS_CLASSES . 'message_stack.php'); $messageStack = new messageStack; // set which precautions should be checked define('WARN_INSTALL_EXISTENCE', 'true'); define('WARN_CONFIG_WRITEABLE', 'true'); define('WARN_SESSION_DIRECTORY_NOT_WRITEABLE', 'true'); define('WARN_SESSION_AUTO_START', 'true'); define('WARN_DOWNLOAD_DIRECTORY_NOT_READABLE', 'true'); ?> Quote Link to comment Share on other sites More sharing options...
Guest Posted May 1, 2007 Share Posted May 1, 2007 (edited) this is also ok. Post your catalog\root.php I will try it here to see if I can replicate the problem with your file, otherwise I would have to debug this on your end. Edited May 1, 2007 by enigma1 Quote Link to comment Share on other sites More sharing options...
webberman Posted May 1, 2007 Share Posted May 1, 2007 this is also ok. Post your catalog\root.php I will try it here to see if I can replicate the problem with your file, otherwise I would have to debug this on your end. <?php /* //---------------------------------------------------------------------------- // Copyright © 2006-2007 Asymmetric Software - Innovation & Excellence // Author: Mark Samios // http://www.asymmetrics.com // SEO-G Root page // Main handler script // Includes part of the includes/application_top.php from osCommerce to // initialize the database. //---------------------------------------------------------------------------- // Script is intended to be used with: // osCommerce, Open Source E-Commerce Solutions // http://www.oscommerce.com // Copyright © 2003 osCommerce //---------------------------------------------------------------------------- // Released under the GNU General Public License //---------------------------------------------------------------------------- // MAKE SURE THE FOLLOWING SECTION IS COPIED DIRECTLY FROM YOUR OWN // catalog\includes\application_top.php // See documentation for details. //---------------------------------------------------------------------------- */ //---------------------------------------------------------------------------- //-MS- Beginning of application_top.php section //---------------------------------------------------------------------------- // start the timer for the page parse time log define('PAGE_PARSE_START_TIME', microtime()); // set the level of error reporting error_reporting(E_ALL & ~E_NOTICE); // 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. // >>> BEGIN REGISTER_GLOBALS // 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.'); // } // <<< END REGISTER_GLOBALS // Set the local configuration parameters - mainly for developers if (file_exists('includes/local/configure.php')) include('includes/local/configure.php'); // include server parameters require('includes/configure.php'); if (strlen(DB_SERVER) < 1) { if (is_dir('install')) { header('Location: install/index.php'); } } // define the project version define('PROJECT_VERSION', 'osCommerce 2.2-MS2'); // set the type of request (secure or not) $request_type = (getenv('HTTPS') == 'on') ? 'SSL' : 'NONSSL'; // set php_self in the local scope if (!isset($PHP_SELF)) $PHP_SELF = $HTTP_SERVER_VARS['PHP_SELF']; if ($request_type == 'NONSSL') { define('DIR_WS_CATALOG', DIR_WS_HTTP_CATALOG); $g_relpath = HTTP_SERVER . DIR_WS_CATALOG; $g_server = HTTP_SERVER; } else { define('DIR_WS_CATALOG', DIR_WS_HTTPS_CATALOG); $g_relpath = HTTPS_SERVER . DIR_WS_CATALOG; $g_server = HTTPS_SERVER; } // include the list of project filenames require(DIR_WS_INCLUDES . 'filenames.php'); // include the list of project database tables require(DIR_WS_INCLUDES . 'database_tables.php'); // customization for the design layout define('BOX_WIDTH', 125); // how wide the boxes should be in pixels (default: 125) // include the database functions require(DIR_WS_FUNCTIONS . 'database.php'); // make a connection to the database... now tep_db_connect() or die('Unable to connect to database server!'); // set the application parameters $configuration_query = tep_db_query('select configuration_key as cfgKey, configuration_value as cfgValue from ' . TABLE_CONFIGURATION); while ($configuration = tep_db_fetch_array($configuration_query)) { define($configuration['cfgKey'], $configuration['cfgValue']); } //---------------------------------------------------------------------------- //-MS- End of application_top.php section //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // SEO-G Section starts here. This part is required for proper operation // Do not override the code below //---------------------------------------------------------------------------- require(DIR_WS_CLASSES . 'seo_url.php'); $g_seo_url = new seoURL; $osc_url = $osc_params = $osc_parse = ''; if( $g_seo_url->get_osc_url($g_server . $_SERVER['REQUEST_URI'], $osc_url, $osc_params, $osc_parse) ) { $PHP_SELF = $HTTP_SERVER_VARS['PHP_SELF'] = $_SERVER['PHP_SELF'] = $_SERVER['SCRIPT_NAME'] = $osc_parse['path']; if(basename($_SERVER['PHP_SELF']) == 'root.php' ) { exit(); } for($i=0, $j=count($osc_params); $i<$j; $i++ ) { $array_equal = explode('=', $osc_params[$i]); if( is_array($array_equal) ) { if( isset($array_equal[1]) ) { $HTTP_GET_VARS[$array_equal[0]] = $array_equal[1]; $_GET[$array_equal[0]] = $array_equal[1]; } else { $HTTP_GET_VARS[$array_equal[0]] = ''; $_GET[$array_equal[0]] = ''; } } } $g_script = basename($PHP_SELF); $g_seo_flag = true; require(basename($PHP_SELF)); } elseif( file_exists(basename($osc_parse['path']))) { $PHP_SELF = $HTTP_SERVER_VARS['PHP_SELF'] = $_SERVER['PHP_SELF'] = $_SERVER['SCRIPT_NAME'] = $osc_parse['path']; if(basename($_SERVER['PHP_SELF']) == 'root.php' ) { exit(); } $g_script = basename($PHP_SELF); $g_seo_flag = true; require(basename($osc_parse['path'])); } else { // Script not found. Initiate redirection header("HTTP/1.1 " . SEO_DEFAULT_ERROR_HEADER); header('Location: ' . $g_relpath . SEO_DEFAULT_ERROR_REDIRECT); } exit(); ?> Quote Link to comment Share on other sites More sharing options...
Guest Posted May 1, 2007 Share Posted May 1, 2007 I see you're using the default root.php There is a note in the document and in that file: // MAKE SURE THE FOLLOWING SECTION IS COPIED DIRECTLY FROM YOUR OWN // catalog\includes\application_top.php // See documentation for details. Can you make sure the portion is directly copied from your own application_top.php? Afterwards in the root.php change this code: if ($request_type == 'NONSSL') { define('DIR_WS_CATALOG', DIR_WS_HTTP_CATALOG); } else { define('DIR_WS_CATALOG', DIR_WS_HTTPS_CATALOG); } to this: if ($request_type == 'NONSSL') { define('DIR_WS_CATALOG', DIR_WS_HTTP_CATALOG); $g_relpath = HTTP_SERVER . DIR_WS_CATALOG; $g_server = HTTP_SERVER; } else { define('DIR_WS_CATALOG', DIR_WS_HTTPS_CATALOG); $g_relpath = HTTPS_SERVER . DIR_WS_CATALOG; $g_server = HTTPS_SERVER; } I will update the documentation about it with the next version to clarify it. So far I tried that file here and the part of the application_top.php but I do not see anything wrong. Quote Link to comment Share on other sites More sharing options...
Guest Posted May 1, 2007 Share Posted May 1, 2007 Release v1.10 is available with the following changes: - Added Google XML Sitemap - Added editing, delete, individual selection functionality with the reports page. - Added Priority, Frequency for the Google sitemap. - Updated string files on the admin end. Quote Link to comment Share on other sites More sharing options...
WebbyIT Posted May 2, 2007 Share Posted May 2, 2007 When I browse by manufacturer I get "site.com/index.html?manufacturers_id=24" When I click on any of the products listed, I get the correct SEO-G URL, "site.com/manufacturer/product.html" Where should I start looking to resolve this? Thanks Quote Link to comment Share on other sites More sharing options...
nordscan Posted May 2, 2007 Share Posted May 2, 2007 1146 - Table 'nh491400db.TABLE_SEO_FREQUENCY' doesn't exist select count(seo_url_key) as total from seo_url su left join TABLE_SEO_FREQUENCY sf on (sf.seo_frequency_id=su.seo_frequency_id) i update to ver. 0.10 budt in G-reports have i this error Quote Link to comment Share on other sites More sharing options...
Guest Posted May 2, 2007 Share Posted May 2, 2007 1146 - Table 'nh491400db.TABLE_SEO_FREQUENCY' doesn't exist select count(seo_url_key) as total from seo_url su left join TABLE_SEO_FREQUENCY sf on (sf.seo_frequency_id=su.seo_frequency_id) i update to ver. 0.10 budt in G-reports have i this error Make sure you did item-2 of the documentation. Quote Link to comment Share on other sites More sharing options...
nordscan Posted May 2, 2007 Share Posted May 2, 2007 thnx, the \seo_g_1_2_3_4_5_6_7\SEO-G\catalog\admin\includes\database_tables.php - is not updated for clean install Quote Link to comment Share on other sites More sharing options...
nordscan Posted May 2, 2007 Share Posted May 2, 2007 thnx, the \seo_g_1_2_3_4_5_6_7\SEO-G\catalog\admin\includes\database_tables.php - is not updated for clean install Quote Link to comment Share on other sites More sharing options...
Guest Posted May 2, 2007 Share Posted May 2, 2007 (edited) thnx, the \seo_g_1_2_3_4_5_6_7\SEO-G\catalog\admin\includes\database_tables.php - is not updated for clean install sorry, I did not update the stock files (filenames.php and database_tables.php) with v1.10. The manual instructions are correct however for this. I will make sure they get in with the next version. So make sure you did items 1,2 from the documentation. Edited May 2, 2007 by enigma1 Quote Link to comment Share on other sites More sharing options...
Guest Posted May 2, 2007 Share Posted May 2, 2007 When I browse by manufacturer I get "site.com/index.html?manufacturers_id=24" When I click on any of the products listed, I get the correct SEO-G URL, "site.com/manufacturer/product.html" Where should I start looking to resolve this? Thanks This is mentioned in the documentation: - Some of the osC stock drop-down lists (ex: manufacturers) do not use the tep_href_link function so the manufacturer id is not translated with the url but is appended separately. As mentioned earlier it is essential for links to be filtered via the tep_href_link function for SEO-G to be effective. the responsible code is in catalog\includes\boxes\manufacturers.php while ($manufacturers = tep_db_fetch_array($manufacturers_query)) { $manufacturers_name = ((strlen($manufacturers['manufacturers_name']) > MAX_DISPLAY_MANUFACTURER_NAME_LEN) ? substr($manufacturers['manufacturers_name'], 0, MAX_DISPLAY_MANUFACTURER_NAME_LEN) . '..' : $manufacturers['manufacturers_name']); $manufacturers_array[] = array('id' => $manufacturers['manufacturers_id'], 'text' => $manufacturers_name); } $info_box_contents = array(); $info_box_contents[] = array('form' => tep_draw_form('manufacturers', tep_href_link(FILENAME_DEFAULT, '', 'NONSSL', false), 'get'), 'text' => tep_draw_pull_down_menu('manufacturers_id', $manufacturers_array, (isset($HTTP_GET_VARS['manufacturers_id']) ? $HTTP_GET_VARS['manufacturers_id'] : ''), 'onChange="this.form.submit();" size="' . MAX_MANUFACTURERS_LIST . '" style="width: 100%"') . tep_hide_session_id()); As you see there is no tep_href_link function with the manufacturers_id appended. tep_href_link(FILENAME_DEFAULT, '', 'NONSSL', false) and that only includes the index.php Quote Link to comment Share on other sites More sharing options...
♥toyicebear Posted May 2, 2007 Share Posted May 2, 2007 Did a quick test....a very impressive solution... A small question though... Seo-g creates duplicate urls for products, urls with category when linked from sub-category level and without category when linked from everywhere else. Example: product_swat-3-close-quarters-battle.html and category_software_simulation_product_swat-3-close-quarters-battle.html Maybe i have missed a setting? If not it would be benificial to have an admin setting where you could choose the one or the other format and then the chosen format being enforced through the whole store. Quote Basics for osC 2.2 Design - Basics for Design V2.3+ - Seo & Sef Url's - Meta Tags for Your osC Shop - Steps to prevent Fraud... - MS3 and Team News... - SEO, Meta Tags, SEF Urls and osCommerce - Commercial Support Inquiries - OSC 2.3+ How To To see what more i can do for you check out my profile [click here] Link to comment Share on other sites More sharing options...
jemmasta Posted May 2, 2007 Share Posted May 2, 2007 Just added this contribution and it works great except one thing... If I use the provided changes to file split_page_result.php the admin site's orders.php gives following error: 1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '*) as total from orders o left join orders_total ot on (o.orde select count(distinct *) as total from orders o left join orders_total ot on (o.orders_id = ot.orders_id), stores st, orders_status s where o.orders_status = s.orders_status_id and s.language_id = '6' and ot.class = 'ot_total' and o.orders_stores_id = st.stores_id [TEP STOP] Without the changes to split_page_result.php everything works fine except the osCId is at first on the links on store root. Any ideas how to fix this? Quote Link to comment Share on other sites More sharing options...
Guest Posted May 2, 2007 Share Posted May 2, 2007 because the same is created with the stoc osc, so no you haven't missed anything. http://demo.oscommerce.com/product_info.php?products_id=8 (from the new products) http://demo.oscommerce.com/product_info.ph...p;products_id=8 (from the categories) There are workarounds, none of them is easy however. 1. You modify the catalog\includes\classes\seo_url.php to do an extra pass for the parameters in order to detect combinations of products_id and cPath (and if you have other contributions like articles the articles_id and tPath). Then if you do not find a match you generate the cPath. Which can cause problems because it affects other scripts like the product_reviews, product_reviews_write etc all of them pass the products_id with the url. And that may cause side effects I cannot predict. Because you probably don't want to append the categories names with the product reviews for example. When safe mode is false this can have other side effects with the products_id processed by get forms as those are translated by seo-g and again there you gona have the categories name appended. Keep in mind the cPath needs to be added to the osC url before returning to have consistency with the links. 2. You modify the pages those now do not pass the cPath to the tep_href_link, to include the cPath parameter. This may seem easier initially but it gets complicated due to various modules and pages that include products. (many files to change in other words and if you have other contributions installed it becomes very complicated). Then there is another problem with linked products to multiple categories. In which case none of the above works because it will pull one of the cpaths to generate the seo url. And you may want to expose the product with a different category. Quote Link to comment Share on other sites More sharing options...
Guest Posted May 2, 2007 Share Posted May 2, 2007 Just added this contribution and it works great except one thing... If I use the provided changes to file split_page_result.php the admin site's orders.php gives following error: 1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '*) as total from orders o left join orders_total ot on (o.orde select count(distinct *) as total from orders o left join orders_total ot on (o.orders_id = ot.orders_id), stores st, orders_status s where o.orders_status = s.orders_status_id and s.language_id = '6' and ot.class = 'ot_total' and o.orders_stores_id = st.stores_id [TEP STOP] Without the changes to split_page_result.php everything works fine except the osCId is at first on the links on store root. Any ideas how to fix this? I don't know what contribution you're using but that contribution should have done what I did with the split page results already (otherwise they cannot reliably use the distinct with the split class). When you use these prefixes for temporary tables you need to specify where the distinct applies to. Find where the distinct with the sql query is, in the orders.php Then when the page split is done pass an extra parameter at the end to specify the prefix. Like: $orders_split = new splitPageResults($HTTP_GET_VARS['page'], MAX_DISPLAY_SEARCH_RESULTS, $orders_query_raw, $orders_query_numrows, 'o.orders_id'); Quote Link to comment Share on other sites More sharing options...
jemmasta Posted May 2, 2007 Share Posted May 2, 2007 I don't know what contribution you're using but that contribution should have done what I did with the split page results already (otherwise they cannot reliably use the distinct with the split class). When you use these prefixes for temporary tables you need to specify where the distinct applies to. Find where the distinct with the sql query is, in the orders.php Then when the page split is done pass an extra parameter at the end to specify the prefix. Like: $orders_split = new splitPageResults($HTTP_GET_VARS['page'], MAX_DISPLAY_SEARCH_RESULTS, $orders_query_raw, $orders_query_numrows, 'o.orders_id'); I was using the SEO-G v. 1.10 and adding the extra parameter helped here. And somehow I feel a bit stupid right about now. ;) :D Quote Link to comment Share on other sites More sharing options...
Guest Posted May 2, 2007 Share Posted May 2, 2007 I was using the SEO-G v. 1.10 and adding the extra parameter helped here. And somehow I feel a bit stupid right about now. ;) :D There was another post about it so I am afraid this may cause the same issue with other contributions. So instead of dealing with each case I have updated the SEO-G (I will post it shortly) to use a separate class for the split pages. This way I won't have to deal with such problems in this thread. Quote Link to comment Share on other sites More sharing options...
Guest Posted May 2, 2007 Share Posted May 2, 2007 SEO-G v1.11 is posted. Modifications: - Removed default split page class mods and instructions as it was causing problems with other contributions. The included splt_page_results.php with the archive is now the original osC file. (This file will be removed from future versions). - Added separate split page class to service the SEO-G requirements. - Added the sample files filenames.php, database_tables.php - Added back delete-all function in addition to the regular delete for the reports page. Quote Link to comment Share on other sites More sharing options...
WebbyIT Posted May 2, 2007 Share Posted May 2, 2007 When I browse by manufacturer I get "site.com/index.html?manufacturers_id=24" When I click on any of the products listed, I get the correct SEO-G URL, "site.com/manufacturer/product.html" Where should I start looking to resolve this? Thanks This is mentioned in the documentation:- Some of the osC stock drop-down lists (ex: manufacturers) do not use the tep_href_link function so the manufacturer id is not translated with the url but is appended separately. As mentioned earlier it is essential for links to be filtered via the tep_href_link function for SEO-G to be effective. the responsible code is in catalog\includes\boxes\manufacturers.php while ($manufacturers = tep_db_fetch_array($manufacturers_query)) { $manufacturers_name = ((strlen($manufacturers['manufacturers_name']) > MAX_DISPLAY_MANUFACTURER_NAME_LEN) ? substr($manufacturers['manufacturers_name'], 0, MAX_DISPLAY_MANUFACTURER_NAME_LEN) . '..' : $manufacturers['manufacturers_name']); $manufacturers_array[] = array('id' => $manufacturers['manufacturers_id'], 'text' => $manufacturers_name); } $info_box_contents = array(); $info_box_contents[] = array('form' => tep_draw_form('manufacturers', tep_href_link(FILENAME_DEFAULT, '', 'NONSSL', false), 'get'), 'text' => tep_draw_pull_down_menu('manufacturers_id', $manufacturers_array, (isset($HTTP_GET_VARS['manufacturers_id']) ? $HTTP_GET_VARS['manufacturers_id'] : ''), 'onChange="this.form.submit();" size="' . MAX_MANUFACTURERS_LIST . '" style="width: 100%"') . tep_hide_session_id()); As you see there is no tep_href_link function with the manufacturers_id appended. tep_href_link(FILENAME_DEFAULT, '', 'NONSSL', false) and that only includes the index.php Please excuse my ignorance but I have went over all the documentation again since reading your reply and I am still confused about what to do. Should I leave it as is or can I rewrite catalog\includes\boxes\manufacturers.php so it utilizes the tep_href_link function to resolve this issue? Quote Link to comment Share on other sites More sharing options...
Guest Posted May 2, 2007 Share Posted May 2, 2007 Please excuse my ignorance but I have went over all the documentation again since reading your reply and I am still confused about what to do. Should I leave it as is or can I rewrite catalog\includes\boxes\manufacturers.php so it utilizes the tep_href_link function to resolve this issue? How many manufacturers do you have? Go to your osc admin->configuration->Maximum values->Manufacturers List. Set it to a number to cover the max number of manufacturers used. (ex: 50). This will get rid of the drop-down list as long as the number of manufacturers in your store is less than 50. Quote Link to comment Share on other sites More sharing options...
WebbyIT Posted May 2, 2007 Share Posted May 2, 2007 How many manufacturers do you have? Go to your osc admin->configuration->Maximum values->Manufacturers List. Set it to a number to cover the max number of manufacturers used. (ex: 50). This will get rid of the drop-down list as long as the number of manufacturers in your store is less than 50.Thanks for the suggestion but unfortunately there are currently around 120 manufacturers so showing all of them would eat up to much real estate. If there is no work-around for this I'm not going to lose any sleep over it, I was just checking to see what my options are. Quote Link to comment Share on other sites More sharing options...
Guest Posted May 2, 2007 Share Posted May 2, 2007 (edited) Thanks for the suggestion but unfortunately there are currently around 120 manufacturers so showing all of them would eat up to much real estate. If there is no work-around for this I'm not going to lose any sleep over it, I was just checking to see what my options are. well the drop-down list won't be processed by spiders in any case because it's via a form. And the spider is not going to make combinations of the options. The disadvantage is that spiders won't see the manufacturers with the drop-down list so you could use one of the contributions like the all manufacturers page to complement that. http://www.oscommerce.com/community/contributions,1685 Edited May 2, 2007 by enigma1 Quote Link to comment Share on other sites More sharing options...
WebbyIT Posted May 2, 2007 Share Posted May 2, 2007 well the drop-down list won't be processed by spiders in any case because it's via a form. And the spider is not going to make combinations of the options. The disadvantage is that spiders won't see the manufacturers with the drop-down list so you could use one of the contributions like the all manufacturers page to complement that.http://www.oscommerce.com/community/contributions,1685 The CSS Manufacturers Box contribution uses the tep_href_link function. Do you think it will solve the issues discussed (spiders and URL's) Quote Link to comment Share on other sites More sharing options...
Guest Posted May 3, 2007 Share Posted May 3, 2007 The CSS Manufacturers Box contribution uses the tep_href_link function. Do you think it will solve the issues discussed (spiders and URL's) Yes the full link is passed there so you should be ok. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.