我想破坏我的一个Symfony2控制器中的会话,并使用以下代码:
$this->get('session')->invalidate();
Run Code Online (Sandbox Code Playgroud)
但似乎这实际上没有摆脱会话数据,我必须手动删除会话变量,如下所示:
$session->remove('viewed');
$session->remove('name');
Run Code Online (Sandbox Code Playgroud)
有没有办法可以解决为什么invalidate()不会清除会话?
PS如果我这样做:
session_start();
session_destroy();
Run Code Online (Sandbox Code Playgroud)
它有效,所以它不是服务器/ php /浏览器问题.
小智 7
确保在脚本中有会话无效.
$session->start(); // Start the session...
$session->invalidate(); // ...then invalidate
Run Code Online (Sandbox Code Playgroud)
它的工作原理如下:
$request->getSession()->invalidate(1);
Run Code Online (Sandbox Code Playgroud)
如果您没有提供任何参数,则无效会使当前会话保持不变,您必须将生命周期设置为1(一秒)
http://api.symfony.com/2.6/Symfony/Component/HttpFoundation/Session/Session.html#method_invalidate
尝试:
$this->get('session')->clear();
Run Code Online (Sandbox Code Playgroud)
如果这不起作用你可以使用这个:
$session = $this->get('session');
$ses_vars = $session->all();
foreach ($ses_vars as $key => $value) {
$session->remove($key);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7445 次 |
| 最近记录: |