@vardoLP
Ват ю сэй эбаут май мама?!

Почему неправильно работает добавление в избранное?

Всем привет. Поставил скрипт добавления в избранное товаров. На одном сайте все работает нормально, на другом как попало. Другими словами, при клике на значок избранного количество в шапке может обновиться, а может и не обновится. Товары попадают в избранное, но не удаляются. Собственно, такая проблема происходит только с неавторизованными юзерами.

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle(" ");
$GLOBALS['APPLICATION']->RestartBuffer();
use Bitrix\Main\Application;
use Bitrix\Main\Web\Cookie;
$application = Application::getInstance();
$context = $application->getContext(); 
/* Избранное */
   global $APPLICATION;
   if($_POST['id'])
   {
      if(!$USER->IsAuthorized()) // Для неавторизованного
      {
		
        $arElements = unserialize($APPLICATION->get_cookie('favorites'));
        if(!in_array($_POST['id'], $arElements))
        {
               $arElements[] = $_POST['id'];
               $result = 1; // Датчик. Добавляем
        }
        else {
            $key = array_search($_POST['id'], $arElements); // Находим элемент, который нужно удалить из избранного
            unset($arElements[$key]);
            $result = 2; // Датчик. Удаляем
        }
        $cookie = new Cookie("favorites", serialize($arElements), time() + 60*60*24*60);
		$cookie->setDomain($context->getServer()->getHttpHost()); 
        $cookie->setHttpOnly(false);
		$cookie->setSecure(false);
		$context->getResponse()->addCookie($cookie); 
        $context->getResponse()->flush("");
      }
      else { // Для авторизованного
         $idUser = $USER->GetID();
         $rsUser = CUser::GetByID($idUser);
         $arUser = $rsUser->Fetch();
         $arElements = $arUser['UF_FAVORITES'];  // Достаём избранное пользователя
         if(!in_array($_POST['id'], $arElements)) // Если еще нету этой позиции в избранном
         {
            $arElements[] = $_POST['id'];
            $result = 1;
         }
         else {
            $key = array_search($_POST['id'], $arElements); // Находим элемент, который нужно удалить из избранного
            unset($arElements[$key]);
            $result = 2;
         }
         $USER->Update($idUser, Array("UF_FAVORITES" => $arElements)); // Добавляем элемент в избранное
      }
   }
/* Избранное */ 
echo json_encode($result);
 die(); ?>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
  • Вопрос задан
  • 27 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы