Modx minishop2 и Cookie

Всем привет,

Столкнулся с такой проблемой.

При заходе на сайт в плагине я устанавливаю куку с временем и потом вешаю таймер обратного отсчет (типо скидка новым покупателям)

Вот так
if($_COOKIE['timer'] != '1') {
    setcookie("timer","1", time()+36000000);
    setcookie("timer_date",date("Y-m-d H:i:s") , time()+36000000);
}
Потом делаю определенные манипуляции и все работает. НО!

Заметил, если человек в первый раз заходит на главную или корзину или вообще хоть куда, то все нормально,
а если он в первый раз зашел в каталог или товар (minishop2), а при переходе на другие страницы не связанные каталогом и товаром, то у меня появляется 2 куки.

Одна на каталоге и у товаров
Другая на текстовых страницах.

Причем потестил на разных сайтах. В чем может быть проблема?
perfkirill
15 ноября 2019, 09:42
modx.pro
853
0

Комментарии: 3

perfkirill
15 ноября 2019, 10:04
0
Сделал через SESSION. Я понимаю, что сесси хранятся в куки у MODX, но мне все равно интересно как решить такую проблему. И почему она возникает.
    Александр
    15 ноября 2019, 21:55
    0
    Может path влияет
    www.php.net/manual/ru/function.setcookie.php
    path
    Путь к директории на сервере, из которой будут доступны cookie. Если задать '/', cookie будут доступны во всем домене domain. Если задать '/foo/', cookie будут доступны только из директории /foo/ и всех ее поддиректорий (например, /foo/bar/) домена domain. По умолчанию значением является текущая директория, в которой cookie устанавливается.
    R2m0x94 (Vasily)
    06 марта 2020, 10:33
    1
    +1
    Впервые столкнулся с куки. Ранее не пробовал даже вникнуть в них. (
    Первое, что пришло в голову после того, как хром с версией PHP 7.3 включил атрибут в куки `SameSite=None` and `Secure` or `SameSite=Lax`, так это добавить в $head элемент разметки
    <meta http-equiv="set-cookie" content="name=yandex_login;lang=ru;expires=[[!+nowdate:default=`now`:strtotime:mpy=`1.002`:date=`%a, %e %b %Y %T`]] GMT;domain=.yandex.ru;path=/;SameSite=None;Secure" />
    Но консоль не убрала предупреждений, а наоборот сообщила об ошибке.
    Blocked setting the `name=yandex_login;lang=ru;expires= GMT;domain=.yandex.ru;path=/;SameSite=None;Secure` cookie from a `<meta>` tag.
    Читал про это тут и тут, но решение получить куки сниппетом или исходя из этого решенияпроблему решить не удалось. Знаю только, что некоторые из них есть в Инструментах разработчика «Applications > Cookies (Storage)

    Возможно, кто-то уже сталкивался с кукисами. Подскажите, как сделать сниппет [[!getCookie]] и [[!setCookie]]. И как пользоваться ими, для того чтобы предупреждения в консоле пропали о межсайтовых ресурсах <url>?

    UPD: Чтобы не плодить кучу топиков ещё ссылка MODX session и cookie — помогите разобраться (https://modx.pro/help/8159)
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      3