Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Пишу корзину для магазина
При добавлении товара в корзину, проверяю есть ли у пользователя кука "cart_hash", если ее нету, то устанавливаю пользователю куку и заношу запись в БД
public function createRow()
{
$hash = $this->generateHash();
dump($hash);
$this->hash = $hash;
if (Auth::check()) {
$this->user_id = Auth::user()->id;
}
$this->save();
Cookie::queue(Cookie::forever('cart_hash', $hash));
dump($hash);
return $this;
}
public function generateHash()
{
return sha1(microtime() . Str::random());
}
В обеих дампах хеш одинаковый, но в БД записывается "0304d9d1b4389ea75c11a6466d793ef88ea8e56f", а в куки "eyJpdiI6IjM0NGErU2FnaGluYnI3WHlwRXhwcHc9PSIsInZhbHVlIjoiYUtrN016Y3JFb1BNdlhpR3RuMUt3VGlXS3NaXC9CRDROakNaaUFidXVCS0RnczdYMDhWZ2pvVG4yWk5XRjlKYzBDZUd6S3R1TjRrZ1FPZmpLOW51MUdnPT0iLCJtYWMiOiI5MTQ2ZjkzNGViMjJiOWUwYjYwYWE1ZTU1MGFhYzEwYTU1NzhlNGExNzQ4M2NiZGI1ZGI2YWNmZDlmM2ZjYzZhIn0"
Из-за чего это может происходить, и как мне дальше эти хеши сравнивать?
Не в сети
Если делаю дамп а аякс обработчике "Cookie::get('cart_hash')", то хеши совпадают, если в другом контролере, то дампится тот большой хеш
Не в сети
Из доков:
Все cookie, создаваемые Laravel, шифруются и подписываются специальным кодом
Не в сети
Смысл записывать cookie? Она используется кодом на JS? Если нет, то разумнее записывать флаг в сессию (Session).
Не в сети
Из доков:Все cookie, создаваемые Laravel, шифруются и подписываются специальным кодом
А каким образом декодировать или сравнить со значением в бд?
Не в сети
А каким образом декодировать или сравнить со значением в бд?
Автоматически деокдируются. Из тех же доков:
Для получения значения cookie из запроса используйте метод cookie() на экземпляре Illuminate\Http\Request:
$value = $request->cookie('name');
Не в сети
Страницы 1