我想将用户的会话 ID 存储在 cookie 中。
所以我写了这段代码:
public function indexAction()
{
$session_id = $this->get('session')->getId();
$request = $this->get('request');
$value = $request->cookies->get('session_id');
if ($value == null)//if cookie session_id does not exist, we create it
{
$cookie = new Cookie('session_id', $session_id, time() + (3600 * 24 * 7));
$response = new Response();
$response->headers->setCookie($cookie);
$response->send();
}
else echo 'A cookie session_id has already been set :' . $value;
return $this->render('MyBundle:Default:index.html.twig');
}
1.首先,我不知道把这段代码放在哪里。我不认为把它放在 indexAction 中是正确的。
2. 存储会话ID的cookie PHPSESSID已经存在。更改它的到期时间而不是创建一个新的到期时间会更好吗?那么如何更改其到期时间呢?
3. 要更改我的 cookie session_id 的到期时间,我尝试过:
$cookie = new Cookie('session_id', $session_id, time() + (3600 * 24 * 7));
- 并在 config.yml 中设置,在会话下,生命周期为 604800。
4.当我重新打开浏览器时,我也收到以下错误:Failed to start the session because headers have already been sent.
这似乎是由于这个调用$this->get('session')
和这一行:$response->send();
但我不知道我怎么能以另一种方式做到这一点。
但这不起作用:当我关闭浏览器并重新打开它时,我定义的所有 cookie 都已消失,并且 PHPSESSID 具有新值。