Здравствуйте, проблема следующего характера.
Когда у пользователя пустые куки или он некоторое время не заходил на сайт, то товар добавляется в двойном размере.
Вот запрос, сначала 302 редирект, потом ответ 200
Скрытый текст |
|---|
[CODE]/* первый запрос */
GET /catalog/bestsellers/kostyum_tina_rozoviy/?action=ADD2BASKET&s_id=15809&ajax_basket=Y&quantity=1 HTTP/1.1 Host: achers.ru Connection: keep-alive Pragma: no-cache Cache-Control: no-cache User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36 Bx-ajax: true Accept: */* DNT: 1 Referer: http://achers.ru/catalog/bestsellers/kostyum_tina_rozoviy/ Accept-Encoding: gzip, deflate, sdch Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4 Cookie: PHPSESSID=okaseumcjqdqorcndsdaf70m25; BITRIX_SM_SALE_UID=dbbcfbe964b849bb7f3e6a16ac4e96f3; BITRIX_CONVERSION_CONTEXT_s1=%7B%22ID%22%3A1%2C%22EXPIRE%22%3A1493830740%2C%22UNIQUE%22%3A%5B%22conversion_visit_day%22%5D%7D; MAILING_USER_CAME=http%3A%2F%2Fachers.ru%2Fcatalog%2Fbestsellers%2Fkostyum_tina_rozoviy%2F; _ym_uid=1493747727133400311; BX_USER_ID=f074dae1883881878ba10f5b7491277b; _ym_isad=2; _ym_visorc_32624790=w; _ym_visorc_38552980=w
HTTP/1.1 302 Found Server: nginx/1.8.1 Date: Tue, 02 May 2017 17:55:29 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 88 Connection: keep-alive X-Powered-By: PHP/5.6.23 P3P: policyref="/bitrix/p3p.xml", CP="NON DSP COR CUR ADM DEV PSA PSD OUR UNR BUS UNI COM NAV INT DEM STA" X-Powered-CMS: Bitrix Site Manager (9d9119302987c79795f9bea72171d989) Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Set-Cookie: BITRIX_SM_ABTEST_s1=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/ Set-Cookie: BITRIX_SM_ABTEST_s1=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/ Location: http://achers.ru/catalog/bestsellers/kostyum_tina_rozoviy/?action=ADD2BASKET&s_id=15809&ajax_basket=Y&quantity=1 Set-Cookie: BITRIX_CONVERSION_CONTEXT_s1=%7B%22ID%22%3A1%2C%22EXPIRE%22%3A1493830740%2C%22UNIQUE%22%3A%5B%22conversion_visit_day%22%2C%22sale_cart_add_day%22%5D%7D; expires=Wed, 02-May-2018 17:55:29 GMT; Max-Age=31536000; path=/ X-FRAME-OPTIONS: X-Content-Type-Options: nosniff
/* второй запрос */ GET /catalog/bestsellers/kostyum_tina_rozoviy/?action=ADD2BASKET&s_id=15809&ajax_basket=Y&quantity=1 HTTP/1.1 Host: achers.ru Connection: keep-alive Pragma: no-cache Cache-Control: no-cache User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36 Bx-ajax: true Accept: */* DNT: 1 Referer: http://achers.ru/catalog/bestsellers/kostyum_tina_rozoviy/ Accept-Encoding: gzip, deflate, sdch Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4 Cookie: PHPSESSID=okaseumcjqdqorcndsdaf70m25; BITRIX_SM_SALE_UID=dbbcfbe964b849bb7f3e6a16ac4e96f3; MAILING_USER_CAME=http%3A%2F%2Fachers.ru%2Fcatalog%2Fbestsellers%2Fkostyum_tina_rozoviy%2F; _ym_uid=1493747727133400311; BX_USER_ID=f074dae1883881878ba10f5b7491277b; _ym_isad=2; _ym_visorc_32624790=w; _ym_visorc_38552980=w; BITRIX_CONVERSION_CONTEXT_s1=%7B%22ID%22%3A1%2C%22EXPIRE%22%3A1493830740%2C%22UNIQUE%22%3A%5B%22conversion_visit_day%22%2C%22sale_cart_add_day%22%5D%7D
HTTP/1.1 200 OK Server: nginx/1.8.1 Date: Tue, 02 May 2017 17:55:30 GMT Content-Type: text/html; charset=UTF-8 Transfer-Encoding: chunked Connection: keep-alive X-Powered-By: PHP/5.6.23 P3P: policyref="/bitrix/p3p.xml", CP="NON DSP COR CUR ADM DEV PSA PSD OUR UNR BUS UNI COM NAV INT DEM STA" X-Powered-CMS: Bitrix Site Manager (9d9119302987c79795f9bea72171d989) Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Set-Cookie: BITRIX_SM_ABTEST_s1=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/ Set-Cookie: BITRIX_SM_ABTEST_s1=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/ X-FRAME-OPTIONS: X-Content-Type-Options: nosniff [/CODE] |
Все это обрабатывается в component_epilog.php
Скрытый текст |
|---|
[CODE]if (($action == "ADD2BASKET") && $productID > 0) { if (\Bitrix\Main\Loader::includeModule("sale") && \Bitrix\Main\Loader::includeModule("catalog")) { $QUANTITY = 1; if (isset($_REQUEST["quantity"]) && intval($_REQUEST["quantity"]) > 0 ) { $QUANTITY = intval($_REQUEST["quantity"]); } $product_properties = array(); $intProductIBlockID = intval(CIBlockElement::GetIBlockByID($productID)); if (0 < $intProductIBlockID) { if ($arParams['ADD_PROPERTIES_TO_BASKET'] == 'Y') { if ($intProductIBlockID == $arParams["IBLOCK_ID"]) { if (!empty($arParams["PRODUCT_PROPERTIES"])) { foreach($arParams["PRODUCT_PROPERTIES"] as $prop) { $arProp = $arResult["PROPERTIES"][$prop]; $product_properties[] = array( "NAME" => $arProp["NAME"], "CODE" => $arProp["CODE"], "VALUE" => $arProp["VALUE"], "SORT" => "100" ) ; } } } else { $skuAddProps = (isset($_REQUEST['basket_props']) && !empty($_REQUEST['basket_props']) ? $_REQUEST['basket_props'] : ''); if (!empty($arParams["OFFERS_CART_PROPERTIES"]) || !empty($skuAddProps)) { $product_properties = CIBlockPriceTools::GetOfferProperties( $productID, $arParams["IBLOCK_ID"], $arParams["OFFERS_CART_PROPERTIES"], $skuAddProps );
} } } } else { $strError = GetMessage('MRS_CATALOG_ERROR2BASKET'); $successfulAdd = false; }
if ($successfulAdd) { $arRewriteFields["DETAIL_PAGE_URL"] = $arResult["DETAIL_PAGE_URL"];
if(!Add2BasketByProductID($productID, $QUANTITY, $arRewriteFields, $product_properties)) { if ($ex = $APPLICATION->GetException()) $strError = $ex->GetString(); else $strError = GetMessage("MRS_CATALOG_ERROR2BASKET"); $successfulAdd = false; } } [/CODE] |
Даже если избавиться от 302 редиректа, то товар все равно добавляется два раза.