@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),

            ]));
            
        }

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

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

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