通过phalcon删除当前的唯一会话ID?

时间:2016-10-24 09:27:11

标签: php session phalcon

当我从cop1应用程序(项目)注销时,如果我使用$this->session->destroy:它会销毁所有两个应用程序会话(两个应用程序都会注销),但如果我使用remove功能它运作良好,例如。 $this->session->remove("user")。因为它的唯一被破坏的相对会话用户因此只有cop1注销。我需要的是删除所有当前(cop1)会话而不仅仅是会话变量user ?我怎么处理这个?

本地主机/ COP1 /..

$di->set('session', function () {
    $session = new SessionAdapter();
    $session->setOptions(['uniqueId'=> "cop1_"]);
    $session->start();    
    return $session;
});

本地主机/ COP2 /..

$di->set('session', function () {
    $session = new SessionAdapter();
    $session->setOptions(['uniqueId'=> "cop2_"]);
    $session->start();    
    return $session;
});

2 个答案:

答案 0 :(得分:2)

除正常会话外,您是否尝试使用Session Bags

  

此组件有助于将会话数据分成“命名空间”。通过这种方式工作,您可以轻松地在应用程序中创建会话变量组。只需在“包”中设置变量,它就会自动存储在会话中。

每当有人登录您的应用时,您都会创建一个会话包:

$sessionBag = new \Phalcon\Session\Bag('user');
$sessionBag->set('key', 'value');

当您要退出时,请执行以下操作:

$sessionBag->destroy();

答案 1 :(得分:-1)

我无法使用session bag,因为我当前的项目有很多模块和会话,因此我没有时间替换代码。现在我的问题已由session_name解决,但我不知道这是一个好问题吗?希望对像我这样的人有所帮助......

  

session_name允许您为每个应用程序[同一个域]提供不同的会话。

<强>本地主机/ COP1 /..

$di->set('session', function () {
    $session = new SessionAdapter();
    $session->setOptions(['uniqueId'=> "cop1_"]);
    session_name("cop1");
    $session->start();    
    return $session;
});

<强>本地主机/ COP2 /..

$di->set('session', function () {
    $session = new SessionAdapter();
    $session->setOptions(['uniqueId'=> "cop2_"]);
    session_name("cop2");
    $session->start();    
    return $session;
});