我有一个非常古老的普通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
我该怎么做?
目前,我对安全性问题不感兴趣- 这是一个测试解决方案,最终所有事情都会根据最佳实践来完成:)
答案 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');
}
}