Как получить доступ к глобальным переменным $ _SESSION и $ _COOKIE из приложения laravel?

Я работаю над проектом laravel, который должен работать помимо настраиваемого проекта php, потому что мне нужно получить доступ к чистым php-глобальным значениям $ _SESSION и $ _COOKIE в приложении laravel.

До сих пор я получаю просто пустоту или пустоту. Кто-нибудь знает, как это сделать?

У Laravel есть собственные реализации $_SESSION и $_COOKIE , поэтому я боюсь, что вы не сможете получить к ним доступ через эти суперглобалы.

Чтобы попытаться преодолеть это, что вы можете сделать в своем приложении Laravel, это передача данных от одного к другому, делая что-то вроде:

 foreach(Session::all() $key => $value) { $_SESSION[$key] = $value; } 

У меня была аналогичная проблема с CakePHP пару месяцев назад. В основном, переменные сеанса в приложении Cake полностью не зависели от переменных сеанса в прикладном приложении, которое у нас было. Проблема заключалась в том, что Cake использует другой идентификатор сеанса, чем PHPSESSID. В конце концов, я был вынужден преодолеть разрыв, заставив Cake использовать PHPSESSID. Я не слишком хорошо знаком с Laravel, но из того, что я вижу (на их основном сайте), они, похоже, используют «laravel_session» вместо PHPSESSID. Это, скорее всего, ваша проблема, и, похоже, об этом говорится на официальных форумах Laravel.

Ответ на сеансы настолько прост, что я не верю в начале, что он действительно сработает.

Я думал, что Laravel каким-то образом переопределяет поведение стандартных PHP-сессий по умолчанию. Может быть, объявление пользовательского session_handler или какой-либо другой магии за кулисами.

Спасибо за все ответы, которые я получил здесь, я обнаружил, что Laravel фактически не использует $ _SESSION, он реализует совершенно другой драйвер.

Таким образом, чтобы иметь доступ к внешнему сеансу, я просто использую собственные session_start() и session_name() в чистом PHP, и теперь у меня есть доступ ко всем данным, хранящимся в глобальной $_SESSION в том же пространстве имен, которое используется в побочном проекте.

Для файлов cookie я еще не могу понять, как это сделать, из приложения Laravel: /. Но только с сессиями я могу продолжить и объединить приложения.

У Laravel есть своя реализация этих глобалов, но вы можете получить к ним доступ через класс запроса Symfony, который является родителем запроса Laravel. Symfony работает напрямую с глобальными.

сессия:

 Request::getSession(); 

Cookie:

 $cookie = new ParameterBag($cookie_name); 

У меня была аналогичная проблема с файлами cookie, которые не были заданы laravel, а Cookie :: get () возвращен null. Это потому, что laravel шифрует свои файлы cookie. Вы можете просто не включать промежуточное программное обеспечение EncryptCookies чтобы избежать этой проблемы. Удалить \App\Http\Middleware\EncryptCookies::class из $middlewareGroups в app\Http\Kernel.php