Перенос приложения PHP на Laravel.Набор данных $ _SESSION в Laravel недоступен в старых php-файлах приложения - PullRequest
0 голосов
/ 01 июня 2018

Я перевожу приложение, написанное на PHP, на Laravel.Я пока не могу перенести функциональность из файлов PHP, поэтому я поместил их в каталог /public, и все в основном хорошо.Однако старое приложение установило $_SESSION["userId"], когда пользователь вошел в систему, и на него ссылаются в большинстве файлов для идентификации текущего пользователя.

Я понимаю, что сессия Laravel не является нативной сессией PHP.Я добавил session_start() в мой app.php файл и установил $_SESSION["userId"], когда пользователь входит в систему, но $_SESSION["userId"] в старых файлах приложения всегда undefined.

Я чувствую, что есть кусокголоволомки, которую я до сих пор скучаю, но я не могу понять это.Я использую свежую установку Laravel 5.6.

РЕДАКТИРОВАТЬ для уточнения

Старое приложение состоит из множества файлов PHP, каждый из которых echo содержит данные JSON, которые называютсячерез запросы ajax.Я просто поместил их в каталог public, и старые URL-адреса в нашем внешнем интерфейсе Angular работают без изменений.

Приложение Angular обслуживается через index.blade.php, в котором контроллер вызывает session_start() и устанавливает переменную $_SESSION["userId"] перед возвратом представления.

1 Ответ

0 голосов
/ 01 июня 2018

Вот упрощенная версия того, что я в итоге реализовал.Требовалось изменить URL-адрес, по которому выполнялись все запросы ajax.

web.php

Route::post('old/{filename}', 'OldController@post');

OldController.php

public function post(Request $request, $filename)
{
    if (session_id() == "") {
        session_start();
    }

    if (Auth::check()) {
        $_SESSION['userId'] = Auth::user()->userId;
    }

    $filePath = realpath(app_path() . '/../response/' . $filename);
    include $filePath; 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...