如何将会话变量从旧的PHP普通系统发送到Symfony3应用

时间:2018-07-27 10:59:56

标签: php symfony

我有一个非常古老的普通PHP系统。

我需要从旧系统中获取一个会话变量,并在Symfony3中使用它。

在示例中,我有带有休闲会话的普通PHP:

<?php

session_start();
$_SESSION['surname'] = 'test';
echo var_dump($_SESSION);

现在我需要在Symfony控制器中使用它:

public function offerAction(Request $request)
{

    // some code

    echo var_dump($_SESSION);
    // or:
    $session->get('name');

    // some code

我该怎么做?

目前,我对安全性问题不感兴趣- 这是一个测试解决方案,最终所有事情都会根据最佳实践来完成:)

1 个答案:

答案 0 :(得分:-1)

我在旧版会话中也有类似的项目。所以我做了。我创建了请求侦听器,在其中读取旧会话并将值从中复制到Symfony的会话中。像这样:

$legacySessionFile = '/path/to/session/file'
$rawSessionData = @file_get_contents($legacySessionFile);
if ($rawSessionData) {
    try {
        session_start();
        session_decode($rawSessionData);
        $legacySession = $_SESSION;
        session_abort();
        if (!empty($legacySession)
            && !empty($legacySession['surname'])
        ) {
            $this->symfonySession->set('surname', $legacySession['surname']);
        }
    } catch (\Exception $e) {
        $this->logger->debug(sprintf('Error reading session data. Exception %s: "%s" at %s line %s',
            \get_class($e), $e->getMessage(), $e->getFile(), $e->getLine()));
        throw new UnauthorizedHttpException('Unauthorized');
    }
}