Куки в Laravel

Laravel отличается тем, что все данные Cookies шифруются и подписываются специальным кодом. При самостоятельном изменении куки на пользовательской стороне они становятся невалидными.

Для получения значения cookie используется cookie() класса request. Приведём пример эквивалентной записи:
<?php
   $value = $request->cookie('name');
   $value = Request::cookie('name');
?>
С помощью метода cookie() можно прикреплять куки к экземпляру Illuminate\Http\Response. В этот метод необходимо передавать ключ, значение и количество минут, в течение которых кука считается действительной:
<?php
   return response('Hello, MouseDC!')->cookie(
      'key', // ключ
      'value', // значение
      $minutes, // количество минут действия куки
      $path, // путь внутри сайта. Если "/", то относится ко всему сайту
      $domain, // домен для установки куки (можно задать для поддомена)
      $secure, // true/false -  данные доступны только через HTTPS
      $httpOnly // true/false -  данные доступны только через HTTP протокол
   );
?>
Если нужно использовать экземпляр cookie позднее в коде, то можно использовать одноимённую вспомогательную пункцию cookie(). Её значение не будет отправлено клиенту до тех пор, пока не будет вызван через метод cookie() класса request. То есть в таком случае надо делать так:
<?php
   $cookie = cookie('key', 'value', $minutes);

   return response('Hello, MouseDC!')->cookie($cookie);
?>
Сама глобальная функция cookie() возвращает экземпляр Symfony\Component\HttpFoundation\Cookie. Её так же можно прикреплять к Illuminate\Http\Response с помощью метода withCookie():
<?php
   $response = new Illuminate\Http\Response('Hello, MouseDC!');
   
   $response->withCookie('key', 'value', $minutes);

   return $response;
?>
Для создания cookie с максимальным временем жизни в 5 лет используйте метод forever(). Для этого сначала вызовите метод "cookie", а потом передайте данные в его в "forever":
<?php
   $response->withCookie(cookie()->forever('key', 'value'));
?>
Если на сайте идёт активная работа с cookie, то может получиться так, что добавить значение cookie в очередь ещё до того, как ответ был создан. В этом может помочь метод queue(). Делается это так:
<?php
   namespace App\Http\Controllers;
   use Cookie;
   use Illuminate\Routing\Controller;
   
   class UserController extends Controller {
      public function update() {
         Cookie::queue('key', 'value');
         return response('Hello, MouseDC!');
      }
   }
?>
MouseDC.ru - хостинг, виртуальный хостинг, покупка доменов, проверка доменов, WHOIS, курсы создания сайтов, вебинары по созданию, курсы разработки сайтов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Cмотрите другие статьи:
Была ли статья полезной?
Была ли эта статья полезна? Есть вопрос?
хостинг для сайтов
Закажите недорогой хостинг Заказать

всего от 290 руб

⇡ наверх