radhavallabh Posted November 4, 2014 Share Posted November 4, 2014 Hey!! Could you help me with below issue The remove button is not working on shopping cart.php It works on URLS without attributes but does not work on URLS with attributes Example shown below The URL is this for the live store but does not remove the item- http://www.radhavallabh.com/radhakrishna-store/shopping_cart.php?products_id=2347{2}77{1}30&action=remove_product The above link contains a item with attributes This URL removes the item http://www.radhavallabh.com/radhakrishna-store/shopping_cart.php?products_id=947&action=remove_product - This link works as product is without attributes\ Please urgent help would be deeply appreciated....... Link to comment Share on other sites More sharing options...
radhavallabh Posted November 4, 2014 Author Share Posted November 4, 2014 Application top.php <?php /* $Id$ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright (c) 2008 osCommerce Released under the GNU General Public License */ // 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 support for register_globals if (function_exists('ini_get') && (ini_get('register_globals') == false) && (PHP_VERSION < 4.3) ) { 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. Please use PHP 4.3+ if register_globals cannot be enabled on the server.'); } // load server configuration parameters if (file_exists('includes/local/configure.php')) { // for developers include('includes/local/configure.php'); } else { include('includes/configure.php'); } if (strlen(DB_SERVER) < 1) { if (is_dir('install')) { header('Location: install/index.php'); } } // define the project version --- obsolete, now retrieved with tep_get_version() define('PROJECT_VERSION', 'osCommerce Online Merchant v2.3'); // some code to solve compatibility issues require(DIR_WS_FUNCTIONS . 'compatibility.php'); // set the type of request (secure or not) $request_type = (getenv('HTTPS') == 'on') ? 'SSL' : 'NONSSL'; // set php_self in the local scope $req = parse_url($HTTP_SERVER_VARS['SCRIPT_NAME']); $PHP_SELF = substr($req['path'], ($request_type == 'NONSSL') ? strlen(DIR_WS_HTTP_CATALOG) : strlen(DIR_WS_HTTPS_CATALOG)); 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'); // include the database functions require(DIR_WS_FUNCTIONS . 'database.php'); // make a connection to the database... now @[member=tep]_db_connect() or header("Location: http://radhavallabh.com/visitors.html"); // 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']); } // if gzip_compression is enabled, start to buffer the output if ( (GZIP_COMPRESSION == 'true') && ($ext_zlib_loaded = extension_loaded('zlib')) && !headers_sent() ) { if (($ini_zlib_output_compression = (int)ini_get('zlib.output_compression')) < 1) { if (PHP_VERSION < '5.4' || PHP_VERSION > '5.4.5') { // see PHP bug 55544 if (PHP_VERSION >= '4.0.4') { ob_start('ob_gzhandler'); } elseif (PHP_VERSION >= '4.0.1') { include(DIR_WS_FUNCTIONS . 'gzip_compression.php'); ob_start(); ob_implicit_flush(); } } } elseif (function_exists('ini_set')) { 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); //Check Krishnastores // if (($PHP_SELF == '') || (strlen(trim($PHP_SELF)) == 0)) $PHP_SELF = rtrim(str_replace(array(getenv('PATH_INFO'),getenv('QUERY_STRING')) , '', $_SERVER['REQUEST_URI']), '?'); $vars = explode('/', substr(getenv('PATH_INFO'), 1)); do_magic_quotes_gpc($vars); 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'); // 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); } @ini_set('session.use_only_cookies', (SESSION_FORCE_COOKIE_USE == 'True') ? 1 : 0); // set the session ID if it exists if ( SESSION_FORCE_COOKIE_USE == 'False' ) { if ( isset($HTTP_GET_VARS[tep_session_name()]) && (!isset($HTTP_COOKIE_VARS[tep_session_name()]) || ($HTTP_COOKIE_VARS[tep_session_name()] != $HTTP_GET_VARS[tep_session_name()])) ) { tep_session_id($HTTP_GET_VARS[tep_session_name()]); } elseif ( isset($HTTP_POST_VARS[tep_session_name()]) && (!isset($HTTP_COOKIE_VARS[tep_session_name()]) || ($HTTP_COOKIE_VARS[tep_session_name()] != $HTTP_POST_VARS[tep_session_name()])) ) { tep_session_id($HTTP_POST_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; } if ( ($session_started == true) && (PHP_VERSION >= 4.3) && function_exists('ini_get') && (ini_get('register_globals') == false) ) { extract($_SESSION, EXTR_OVERWRITE+EXTR_REFS); } // initialize a session token if (!tep_session_is_registered('sessiontoken')) { $sessiontoken = md5(tep_rand() . tep_rand() . tep_rand() . tep_rand()); tep_session_register('sessiontoken'); } // 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 if (!tep_session_is_registered('cart') || !is_object($cart)) { 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'); // Begin Scrolling Customer Testimonials v1.0 // file uploading class require(DIR_WS_CLASSES . 'upload.php'); // End Scrolling Scrolling Customer Testimonials v1.0 // 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 $_system_locale_numeric = setlocale(LC_NUMERIC, 0); require(DIR_WS_LANGUAGES . $language . '.php'); setlocale(LC_NUMERIC, $_system_locale_numeric); // Prevent LC_ALL from setting LC_NUMERIC to a locale with 1,0 float/decimal values instead of 1.0 (see bug #634) // Ultimate SEO URLs v2.2d if ((!defined(SEO_ENABLED)) || (SEO_ENABLED == 'true')) { include_once(DIR_WS_CLASSES . 'seo.class.php'); if ( !is_object($seo_urls) ){ $seo_urls = new SEO_URL($languages_id); } } // 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']) && $currencies->is_set($HTTP_GET_VARS['currency'])) { $currency = $HTTP_GET_VARS['currency']; } else { $currency = ((USE_DEFAULT_LANGUAGE_CURRENCY == 'true') && $currencies->is_set(LANGUAGE_CURRENCY)) ? LANGUAGE_CURRENCY : DEFAULT_CURRENCY; } } // navigation history if (!tep_session_is_registered('navigation') || !is_object($navigation)) { tep_session_register('navigation'); $navigation = new navigationHistory; } $navigation->add_current_page(); // action recorder include('includes/classes/action_recorder.php'); // 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 { $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'])) { $attributes = isset($HTTP_POST_VARS['id']) ? $HTTP_POST_VARS['id'] : ''; $cart->add_cart($HTTP_POST_VARS['products_id'], $cart->get_quantity(tep_get_uprid($HTTP_POST_VARS['products_id'], $attributes))+1, $attributes); } tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters))); break; // customer removes a product from their shopping cart case 'remove_product' : if (isset($HTTP_GET_VARS['products_id'])) { $cart->remove($HTTP_GET_VARS['products_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($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 = '" . (int)$notify[$i] . "' and customers_id = '" . (int)$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 ('" . (int)$notify[$i] . "', '" . (int)$customer_id . "', now())"); } } tep_redirect(tep_href_link($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 = '" . (int)$HTTP_GET_VARS['products_id'] . "' and customers_id = '" . (int)$customer_id . "'"); $check = tep_db_fetch_array($check_query); if ($check['count'] > 0) { tep_db_query("delete from " . TABLE_PRODUCTS_NOTIFICATIONS . " where products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and customers_id = '" . (int)$customer_id . "'"); } tep_redirect(tep_href_link($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(); // auto expire special products require(DIR_WS_FUNCTIONS . 'specials.php'); tep_start_specials(); tep_expire_specials(); require(DIR_WS_CLASSES . 'osc_template.php'); $oscTemplate = new oscTemplate(); // 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; } //on/off // include the category functions and load the category cache if possible require(DIR_WS_FUNCTIONS . 'categories.php'); $success = include(DIR_WS_CACHE . FILENAME_CATEGORY_CACHE); if ($success != 'Category Cache Success') { $hiddencats = array(); if (HIDE_HIDDEN_CAT_PRODS == 'true') { $hiddencats = build_hidden_category_array(); } } // 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'])) { //on/off // add category names or the manufacturer name to the breadcrumb trail if (isset($cPath_array)) { if ($success == 'Category Cache Success') { for ($i=0, $n=sizeof($cPath_array); $i<$n; $i++) { $breadcrumb->add($category_info_array[$cPath_array[$i]]['name'], tep_href_link(FILENAME_DEFAULT, 'cPath=' . $category_info_array[$cPath_array[$i]]['path'])); } } else { 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'])); } } // add the products name to the breadcrumb trail if (isset($HTTP_GET_VARS['products_id'])) { $name_query = tep_db_query("select products_name from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "'"); if (tep_db_num_rows($name_query)) { $name = tep_db_fetch_array($name_query); $breadcrumb->add($name['products_name'], 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; include('megastore_theme.php'); include('megastore_theme/megastore_functions.php'); include('megastore_theme/megastore_socials_accounts.php'); if (mysqli_connect_errno($$link) == 1203) { // 1203 == ER_TOO_MANY_USER_CONNECTIONS (mysqld_error.h) header("Location: http://radhavallabh.com/visitors.html"); exit; } else if (mysqli_connect_errno($$link) == 1040) { // 1040 == ER_TOO_MANY_USER_CONNECTIONS (mysqld_error.h) header("Location: http://radhavallabh.com/visitors.html"); exit; } ?> Link to comment Share on other sites More sharing options...
oscMarket Posted November 4, 2014 Share Posted November 4, 2014 // customer removes a product from their shopping cart case 'remove_product' : if (isset($HTTP_GET_VARS['products_id'])) { $cart->remove($HTTP_GET_VARS['products_id']); $messageStack->add_session('product_action', sprintf(PRODUCT_REMOVED, tep_get_products_name($HTTP_GET_VARS['products_id'])), 'warning'); } tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters))); break; Link to comment Share on other sites More sharing options...
radhavallabh Posted November 4, 2014 Author Share Posted November 4, 2014 Redownloaded 2.3.4 application top original oscommerce It had the same function... // customer removes a product from their shopping cart case 'remove_product' : if (isset($HTTP_GET_VARS['products_id'])) { $cart->remove($HTTP_GET_VARS['products_id']); } tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters))); break; Link to comment Share on other sites More sharing options...
♥joli1811 Posted November 4, 2014 Share Posted November 4, 2014 Not the answer to your problem but a work around I had a problem in the past with quotes special characters in a modified product option type shop with the ability to add text . Any text with special characters could not be removed from the shopping cart A work around was to add a new button/function clear cart all (clear all attributes) ...... which worked http://www.clubosc.com/remove-all-items-from-shopping-cart.html Downside is the complete shopping cart is emptied Regards Joli PS: now not the answer for your problem just a work around To improve is to change; to be perfect is to change often. Link to comment Share on other sites More sharing options...
radhavallabh Posted November 4, 2014 Author Share Posted November 4, 2014 Thank you will just give this a try.... and get back :) But I really do not understand that why it does not work on links bearing attributes... :mellow: Link to comment Share on other sites More sharing options...
multimixer Posted November 4, 2014 Share Posted November 4, 2014 How does function remove() look like in your file catalog/includes/classes/shopping_cart.php ? Checking right now, it doesn't remove products without attributes either. If setting the quantity to 0, it removes normally with and without attributes My community profile | Template system for osCommerce - New: Responsive | Feedback channel Link to comment Share on other sites More sharing options...
radhavallabh Posted November 4, 2014 Author Share Posted November 4, 2014 @@multimixer Thank you for helping me solve this issue... I was testing some altered codes hence those without attributes also stopped working, Now those without attributes have started working again but yet the ones with attributes are causing issues- The function remove is below-- function remove($products_id) { global $customer_id; // $products_id = tep_get_uprid($products_id, $attributes); unset($this->contents[$products_id]); // remove from database if (tep_session_is_registered('customer_id')) { tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET . " where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id) . "'"); tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id) . "'"); } // assign a temporary unique ID to the order contents to prevent hack attempts during the checkout procedure $this->cartID = $this->generate_cart_id(); } Link to comment Share on other sites More sharing options...
radhavallabh Posted November 5, 2014 Author Share Posted November 5, 2014 @@multimixer @@joli1811 @@wHiTeHaT I guess I found the real bug- as parameters are not sending through properly; I am using 'More Products Weight' addon (modified it for 2.3.4) but it does not give any updates for the shopping cart.php I tried making some edits but yet am a little far I guess could you please help me fix the shopping cart.php accordingly...... Attaching below my shopping cart.php I have added the lines for weight that I could figure out- please guide me further... <?php /* $Id$ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright (c) 2010 osCommerce Released under the GNU General Public License */ require("includes/application_top.php"); if ($cart->count_contents() > 0) { include(DIR_WS_CLASSES . 'payment.php'); $payment_modules = new payment; } require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_SHOPPING_CART); $breadcrumb->add(NAVBAR_TITLE, tep_href_link(FILENAME_SHOPPING_CART)); require(DIR_WS_INCLUDES . 'template_top.php'); ?> <h1><?php echo HEADING_TITLE; ?></h1> <?php if ($cart->count_contents() > 0) { ?> <div class="shopping_cart_page"> <?php echo tep_draw_form('cart_quantity', tep_href_link(FILENAME_SHOPPING_CART, 'action=update_product')); ?> <div class="contentContainer"> <h2><?php echo TABLE_HEADING_PRODUCTS; ?></h2> <div class="contentText"> <?php $any_out_of_stock = 0; $products = $cart->get_products(); for ($i=0, $n=sizeof($products); $i<$n; $i++) { // Push all attributes information in an array if (isset($products[$i]['attributes']) && is_array($products[$i]['attributes'])) { while (list($option, $value) = each($products[$i]['attributes'])) { echo tep_draw_hidden_field('id[' . $products[$i]['id'] . '][' . $option . ']', $value); $attributes = tep_db_query("select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix, pa.options_values_weight, pa.weight_prefix from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa where pa.products_id = '" . (int)$products[$i]['id'] . "' and pa.options_id = '" . (int)$option . "' and pa.options_id = popt.products_options_id and pa.options_values_id = '" . (int)$value . "' and pa.options_values_id = poval.products_options_values_id and popt.language_id = '" . (int)$languages_id . "' and poval.language_id = '" . (int)$languages_id . "'"); $attributes_values = tep_db_fetch_array($attributes); $products[$i][$option]['products_options_name'] = $attributes_values['products_options_name']; $products[$i][$option]['options_values_id'] = $value; $products[$i][$option]['products_options_values_name'] = $attributes_values['products_options_values_name']; $products[$i][$option]['options_values_price'] = $attributes_values['options_values_price']; $products[$i][$option]['price_prefix'] = $attributes_values['price_prefix']; $products[$i][$option]['options_values_weight'] = $attributes_values['options_values_weight']; $products[$i][$option]['weight_prefix'] = $attributes_values['weight_prefix']; } } } ?> <table border="0" width="100%" cellspacing="0" cellpadding="0"> <?php for ($i=0, $n=sizeof($products); $i<$n; $i++) { echo ' <tr>'; $products_name = '<table border="0" cellspacing="2" cellpadding="2" class="cart_item">' . ' <tr>' . ' <td align="left"><a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . tep_get_prid($products[$i]['id'])) . '">' . tep_image(DIR_WS_IMAGES . $products[$i]['image'], $products[$i]['name'], '', '', 'class="shoppingcart_img"') . '</a></td>' . ' <td valign="top" align="left"><div class="shopping_cart_product_name"><a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . tep_get_prid($products[$i]['id'])) . '"><strong>' . $products[$i]['name'] . '</strong></a></div>'; if (STOCK_CHECK == 'true') { $stock_check = tep_check_stock($products[$i]['id'], $products[$i]['quantity']); if (tep_not_null($stock_check)) { $any_out_of_stock = 1; $products_name .= $stock_check; } } if (isset($products[$i]['attributes']) && is_array($products[$i]['attributes'])) { reset($products[$i]['attributes']); while (list($option, $value) = each($products[$i]['attributes'])) { $products_name .= '<div class="attributes_options"><small><i> - ' . $products[$i][$option]['products_options_name'] . ' ' . $products[$i][$option]['products_options_values_name'] . '</i></small></div>'; } } $products_name .= ' <div class="shopping_cart_boxes"> <div class="shopping_cart_input">' . tep_draw_input_field('cart_quantity[]', $products[$i]['quantity'], 'size="4"') . tep_draw_hidden_field('products_id[]', $products[$i]['id']) .'</div> <div class="shopping_cart_refresh">'. tep_draw_button(IMAGE_BUTTON_UPDATE, 'refresh') . '</div> </div>'; $products_name .= ' </td>' . ' </tr>' . '</table>'; echo ' <td valign="top">' . $products_name . '</td>' . ' <td align="right" valign="top"> <strong>' . $currencies->display_price($products[$i]['final_price'], tep_get_tax_rate($products[$i]['tax_class_id']), $products[$i]['quantity']) . '</strong> <div class="shopping_cart_button_remove"><a class="icon-trash-2 custom_color" href="' . tep_href_link(FILENAME_SHOPPING_CART, 'products_id=' . $products[$i]['id'] . '&action=remove_product') . '"></a> </div> </td>' . ' </tr>'; } ?> </table> <p class="sub_total" align="right"><strong><?php echo SUB_TITLE_SUB_TOTAL; ?> <?php echo $currencies->format($cart->show_total()); ?></strong></p> <?php if ($any_out_of_stock == 1) { if (STOCK_ALLOW_CHECKOUT == 'true') { ?> <p class="stockWarning" align="center"><?php echo OUT_OF_STOCK_CAN_CHECKOUT; ?></p> <?php } else { ?> <p class="stockWarning" align="center"><?php echo OUT_OF_STOCK_CANT_CHECKOUT; ?></p> <?php } } ?> </div> <div class="buttonSet checkout_button"> <span class="buttonAction"><?php echo tep_draw_button(IMAGE_BUTTON_CHECKOUT, 'triangle-1-e', tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'), 'primary'); ?></span> </div> <?php $initialize_checkout_methods = $payment_modules->checkout_initialization_method(); if (!empty($initialize_checkout_methods)) { ?> <p class="or_paypol" align="right"><?php echo TEXT_ALTERNATIVE_CHECKOUT_METHODS; ?></p> <?php reset($initialize_checkout_methods); while (list(, $value) = each($initialize_checkout_methods)) { ?> <p class="paypal" align="right"><?php echo $value; ?></p> <?php } } ?> </div> </form> </div> <?php } else { ?> <div class="contentContainer"> <div class="contentText"> <?php echo TEXT_CART_EMPTY; ?> <p align="right"><?php echo tep_draw_button(IMAGE_BUTTON_CONTINUE, 'triangle-1-e', tep_href_link(FILENAME_DEFAULT)); ?></p> </div> </div> <?php } require(DIR_WS_INCLUDES . 'template_bottom.php'); require(DIR_WS_INCLUDES . 'application_bottom.php'); ?> Link to comment Share on other sites More sharing options...
Guest Posted November 15, 2014 Share Posted November 15, 2014 I was having the same issue tonight with the 'Option Types' text attributes, so I thought I could strip off all those attributes in that 'remove' link after the product_id with preg_replace like this in the shopping_cart.php: Find: href="' . tep_href_link(FILENAME_SHOPPING_CART, 'products_id=' . $products[$i]['id'] . '&action=remove_product' Replace with: href="' . tep_href_link(FILENAME_SHOPPING_CART, 'products_id=' . preg_replace('/\\{.*/', '', $products[$i]['id']) . '&action=remove_product' Hovering over my 'Remove' link on the shopping cart and no attributes attached anymore, just the normal link with the product_id number, but clicking remove still doesn't remove this product, however other products do remove fine. If I finally figure it out I'll post it here. Link to comment Share on other sites More sharing options...
radhavallabh Posted November 15, 2014 Author Share Posted November 15, 2014 Hi @@netsite I just tried that code- Yes you are right it still does not seem to work... Hope we find the solution to this soon.... :( Link to comment Share on other sites More sharing options...
Guest Posted November 15, 2014 Share Posted November 15, 2014 Strange, using the unmodified link (no preg_replace) I can add another item with same attributes to cart and remove it, but still can't remove the original item. Are you able to try this on yours and see if it's the same? Link to comment Share on other sites More sharing options...
Guest Posted November 15, 2014 Share Posted November 15, 2014 I figured out my issue, not sure if you have the same. No preg_replace needed, they delete fine with all the attributes in the link. I was able to delete a second product without issue until I added a second product again with a special character. I entered Name & Name in a text field and added to cart. In the cart I viewed source and the 'Name & Name' was converted to Name & amp ; Name so the special character interferes with the 'Remove' function. After doing this I can't delete this item either, so I believe we need to sanitize on the input text field(s) in 'product_info.php' Link to comment Share on other sites More sharing options...
radhavallabh Posted November 15, 2014 Author Share Posted November 15, 2014 @@netsite On original - For me it shows below link on remove product but when I try clicking it nothing happens..... ...................shopping_cart.php?products_id=1135{2}15{29}163{30}168{31}165{32}164{34}167&action=remove_product Even view source and inspect element show the same link.... Link to comment Share on other sites More sharing options...
♥joli1811 Posted November 15, 2014 Share Posted November 15, 2014 I figured out my issue, not sure if you have the same. No preg_replace needed, they delete fine with all the attributes in the link. I was able to delete a second product without issue until I added a second product again with a special character. I entered Name & Name in a text field and added to cart. In the cart I viewed source and the 'Name & Name' was converted to Name & amp ; Name so the special character interferes with the 'Remove' function. After doing this I can't delete this item either, so I believe we need to sanitize on the input text field(s) in 'product_info.php' @@netsite Hi Doug, Your case is slightly different the special character in option types is a known bug never did get sanitized had to add a new function see post #5 would be nice if you find the solution. Regards Joli To improve is to change; to be perfect is to change often. Link to comment Share on other sites More sharing options...
Guest Posted November 15, 2014 Share Posted November 15, 2014 OK, I have mine working perfect. If I didn't mention before I'm on v2.3.4 and my option types contribution is from my old v2.2rc2a @@joli1811 Option Types does do a tiny bit of sanitizing in the shopping_cart class which is the root of my problem (until now): $attr_value = htmlspecialchars(stripslashes($value), ENT_QUOTES); By the way, if anybody has this contribution you should add the charset to the line above (mine is UTF-8): $attr_value = htmlspecialchars(stripslashes($value), ENT_QUOTES, 'UTF-8'); -------------------------------------------------------------------------------------------------------------------------------- @@radhavallabh looks like you don't have special character problem I had, but maybe this is what you need: find in includes/classes/shopping_cart.php: unset($this->contents[$products_id]); Make sure you have just ABOVE this line: $products_id = tep_get_uprid($products_id, $attributes); Without that line I found products with custom attributes don't get removed from cart. (and they never remove with special characters but fix below...) --------------------------------------------------------------------------------------------------------------------------------- Now on to my solution for my issue... Option Types takes data from text fields and changes them just before insert into the database when you add to cart. It uses htmpspecialchars() so amperands, quotes, etc are converted (example jack & mary becomes jack & amp ; mary in the database) --- spaced the & part out so it displays correctly on here. When you go to remove from cart these special characters are in the link and nothing gets removed. A simple edit to the shopping cart class takes these conversions and removes the special characters without affecting the displayed data to the customer or you in your order administration. We are re-sanitzing CUSTOMERS_BASKET but not CUSTOMERS_BASKET_ATTRIBUTES so the & amp ; still shows up on the cart page and admin area but not in the remove link (and update cart works fine too with the link like this) (FYI CUSTOMERS_BASKET is where the 'remove' link gets its data) Hope you understood all that ok. Now here's the simple edit: in the file includes/classes/shopping_cart.php find this: $new_products_id_in_cart = $products_id; Add AFTER this line: (what we're donig is replacing all special characters that htmlspecialchars adds (to the remove link on the shopping cart) with nothing so they don't end up in that link and products with special characters in the attrbutes can be deleted from cart) //START FIX FOR REMOVE FROM CART BY DROPPING SPECIAL CHARACTERS IN products_id $find = array("&", ";", "<", ">", "'", "\"", "#"); $replace = array("", "", "", "", "", "", ""); $products_id = str_replace($find, $replace, $products_id); // END OF FIX So in the end your code should look like this in your file: (at least on 2.3 version - 2.2 may be different, didn't check) if (($check_product !== false) && ($check_product['products_status'] == '1')) { if ($notify == true) { $new_products_id_in_cart = $products_id; //START FIX FOR REMOVE FROM CART BY DROPPING SPECIAL CHARACTERS IN products_id $find = array("&", ";", "<", ">", "'", "\"", "#"); $replace = array("", "", "", "", "", "", ""); $products_id = str_replace($find, $replace, $products_id); // END OF FIX tep_session_register('new_products_id_in_cart'); } I hope this helps, I've found lots of forum posts about this issue with no real solution. The string replace isn't the fastest way, just what I did to get it working. Could be better, but good enough for me. Link to comment Share on other sites More sharing options...
♥joli1811 Posted November 16, 2014 Share Posted November 16, 2014 Hi Doug Now going to test if you have really the solution then MAGIC (w00t) Regards Joli To improve is to change; to be perfect is to change often. Link to comment Share on other sites More sharing options...
♥joli1811 Posted November 16, 2014 Share Posted November 16, 2014 No does not work ?? Did you change anything else ? To improve is to change; to be perfect is to change often. Link to comment Share on other sites More sharing options...
Guest Posted November 16, 2014 Share Posted November 16, 2014 It works on mine, that was my issue. Make sure you ended your session if any (logout and login again .... or logout and don't login again) because session remembers the cart. If still not working paste your application top and shopping_cart.php and includes/classses/shopping_cart.php plus tell me your php version. Link to comment Share on other sites More sharing options...
radhavallabh Posted November 16, 2014 Author Share Posted November 16, 2014 Hi @@netsite I have added the code as you suggested function remove($products_id) { global $customer_id; $products_id = tep_get_uprid($products_id, $attributes); unset($this->contents[$products_id]); // remove from database if (tep_session_is_registered('customer_id')) { tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET . " where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id) . "'"); tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id) . "'"); } // assign a temporary unique ID to the order contents to prevent hack attempts during the checkout procedure $this->cartID = $this->generate_cart_id(); } But still does not work please could you help me get this fixed too......... I even tried on second testing but still does not work.... :( if (($check_product !== false) && ($check_product['products_status'] == '1')) { if ($notify == true) { $new_products_id_in_cart = $products_id; //START FIX FOR REMOVE FROM CART BY DROPPING SPECIAL CHARACTERS IN products_id $find = array("&", ";", "<", ">", "'", "\"", "#"); $replace = array("", "", "", "", "", "", ""); $products_id = str_replace($find, $replace, $products_id); // END OF FIX tep_session_register('new_products_id_in_cart'); } Link to comment Share on other sites More sharing options...
radhavallabh Posted November 16, 2014 Author Share Posted November 16, 2014 @netsite I noticed even ....product_info.php?products_id=2354{2}547{29}163{34}167{30}168{31}165{32}164{65}609 link for going to the product for editing also does not work this actually proves that the attributes are causing the main issue ... Please help me figure out the problem... Using Ajax Attribute Manager and More Product Weight addons FYI ; running oscommerce 2.3.4 Link to comment Share on other sites More sharing options...
radhavallabh Posted November 16, 2014 Author Share Posted November 16, 2014 @@netsite @@joli1811I am explaining my issue on oscommerce 2.3.4 more clearly here...shopping_cart.php?products_id=2073&action=remove_product this works shopping_cart.php?products_id=2354{2}547{29}163{34}167{30}168{31}165{32}164{65}609&action=remove_product this does not work product_info.php?products_id=2354 this works product_info.php?products_id=2354{2}547{29}163{34}167{30}168{31}165{32}164{65}609 this does not work Please could you help me understand why are the attributes params in the url are causing problems and help me get it working.... I am running about it for far to much time now :( I even tried using original oscommerce 2.3.4 application_top, shopping cart class and shopping cart.php still same issue persists... Link to comment Share on other sites More sharing options...
Bob Terveuren Posted November 16, 2014 Share Posted November 16, 2014 Hi it looks like there is an attempt to remove multiple products? shopping_cart.php?products_id=3&action=remove_product /shopping_cart.php?products_id=3{29}&action=remove_product These will both work in default osC shopping_cart.php?products_id=3{29}5{9}&action=remove_product That fails I think you may have some add-on that is allowing an attempt to delete multiple products and the code is incomplete in some way as the standard remove_product in application_top will only delete a single product_id so the ones that work are as intended and the ones with multiple products will bork? Link to comment Share on other sites More sharing options...
radhavallabh Posted November 17, 2014 Author Share Posted November 17, 2014 @@Bob Terveuren I have multiple attributes to each product- the below URL has the product ID and Multiple attributes... Hence in below URL shopping_cart.php?products_id=2354{2}547{29}163{34}167{30}168{31}165{32}164{65}609&action=remove_product 2354 is the product ID {2} is the Option Name ID 547 is the Option Value ID {29} is the Option Name ID 163 is the Option Value ID... and so on till 609On oscommerce demo= This link even has product ID and multiple attributes....http://demo.oscommerce.com/shopping_cart.php?products_id=2{4}3{3}6&action=remove_product this works in the demo but mine does not.... :(Could you please elaborate me the multiple product id issue- as I am not able to figure out the mistake you are trying to tell meso we could work on fixing it....Thank you so much again for helping me get this fixed.... awaiting your early response Link to comment Share on other sites More sharing options...
Guest Posted November 17, 2014 Share Posted November 17, 2014 I can delete without issue with multiple attributes but could not with special characters converted from text fields, which I fixed in a previous post. Yours is showing up correctly with Option Types installed, but you're missing something in code somewhere else. It's either shopping_cart.php, application_top.php or includes/classes/shopping_cart.php and possibly includes/functions/general.php Do you have anything in the error log when you try to remove products? What version are you running? Can you post the 4 files above? Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.