@AlexAll

Как в yii2 установить cookies один раз если сразу несколько запросов?

Сайт на yii2, одновременно к нему обращается другой сайт, с двумя и более запросами. Естественно в запросах нет кукисов, и я пытаюсь установить куку, а перед установкой проверяю, есть ли кука
$cookies = Yii::$app->request->cookies->getValue('name');


И когда приходит сразу более одного запроса, естественно проверка не чего не выдает и кука устанавливается(переустанавливается) столько раз, сколько приходит запросов и value для нее устанавливается на последнем запросе.
value делается из
md5(microtime() . rand(0, 1000) );
поэтому она разный
Как сделать так чтобы, она устанавливалась только на первом запросе а остальные игнорировала?

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

public static function setCookies(){
        $cookies = Yii::$app->request->cookies->getValue('name_cookie');
        if(!$cookies){
            $set_cookies_date = (new DateTime())->modify('+1828 day')->format('d.m.Y H:i:s');
            $ip = Yii::$app->request->userIP;
            $hash = md5(microtime() . rand(0, 1000) . $ip);
            $set_cookies = Yii::$app->response->cookies;
            $set_cookies->add(new \yii\web\Cookie([
                'name' => 'name_cookie',
                'value' => $hash,
                'domain' => 'site.local',
                'expire' => strtotime($set_cookies_date),

            ]));
            
        }

 
    }
  • Вопрос задан
  • 50 просмотров
Пригласить эксперта
Ответы на вопрос 2
xEpozZ
@xEpozZ
Веб-разработчик
Проверить, есть ли значение по этой куке, и если нет, то не устанавливать.
Ответ написан
@KingstonKMS
web developer
Думаю, что в вашем случае удобнее будет использовать сессии, они хранятся на сервере. Можно задать время хранения.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
04 июл. 2020, в 18:19
3500 руб./за проект
04 июл. 2020, в 17:51
20000 руб./за проект
04 июл. 2020, в 17:25
2000 руб./за проект