【问题标题】:Sessions in YiiYii 中的会话
【发布时间】:2014-01-24 17:53:45
【问题描述】:

我来了,我正在做的是我正在使用的

 Yii::app()->SESSION['userid']

没有

  Yii::app()->session->open();

登录时

  Yii::app()->session->destroy();

注销时

我想知道不做开放和销毁会话是否值得。 Yii 是在内部做的吗?

还有一件奇怪的事情,我不知道发生了什么。在一个会话的同一个浏览器中,我可以为多个用户登录。这不应该发生。是不是我没有使用打开和销毁会话方法。

 public function actionLogout()
{
    Yii::app()->user->logout();
    Yii::app()->session->clear();
    $this->redirect(Yii::app()->controller->module->returnLogoutUrl);
}

请告诉我如何解决这个问题

【问题讨论】:

    标签: php session yii


    【解决方案1】:

    用于创建 yii 会话

    Yii::app()->session['userid'] = "value";
    

    你可以获得这样的价值

    $sleep = Yii::app()->session['userid'];
    

    并取消设置会话,如

    unset(Yii::app()->session['userid']); # Remove the session
    

    如果用户退出,您必须删除所有会话。

    Yii::app()->session->clear();
    

    在此之后,您需要从服务器中删除实际数据

    Yii::app()->session->destroy();
    

    【讨论】:

    • unset() ,destroy() ,clear() session 应该在注销时使用
    • 如果使用yii auth,需要调用logout()方法github.com/yiisoft/yii/blob/1.1.14/framework/web/auth/…
    • Yii::app()->session->clear();在行动注销........在同一个浏览器的会话中,我可以登录多个用户..这不应该发生这样。是不是我没有使用打开和销毁会话方法.....这是我想弄清楚
    • 试试 Yii::app()->user->logout(true);
    • 如果我有一个公共服务器,即 localhost ,并且有两个目录,如 test1 和 test2 ,并且这两个目录都安装了两个 yii 框架并以单独的方式工作,该怎么办。在这种情况下,如果您要更改 Yii::app()->session['user_id'] 的值,那么在相同会话变量的情况下它会影响两者。你有什么解决办法吗?
    【解决方案2】:

    不清除会话,只注销:

    Yii::app()->user->logout(false);
    

    【讨论】:

      【解决方案3】:

      在 YII 中,会话由“CHttpSession”类处理 - http://www.yiiframework.com/doc/api/1.1/CHttpSession

      您是否应该使用方法 'open()' Yii::app()->session->open(); 取决于您的配置。如果在main.php 中设置了
      'session' => array ( 'autoStart' => true, ),,那么 Session 将由 YII 自己自动启动。 您可以在此处参考方法 'init()' 的源代码 - https://github.com/yiisoft/yii/blob/1.1.16/framework/web/CHttpSession.php#L83

      关于您关于使用“close()”或“destroy()”方法的问题,“close()”方法只会取消设置 Session 的键,但“destroy”会删除整个会话数据

      【讨论】:

        【解决方案4】:

        一旦你创建了会话,它将允许你在同一个浏览器中多次,我的意思是对于相同的 url,它会允许你登录,你可以这样做,用不同的名称重命名你的会话变量,并检查那个 particuller 变量登录.

        Session 是一个 Web 应用组件,可以通过 Yii::$app->session 访问。

        要启动会话,请调用 open();要完成并发送会话数据,请调用 close();要销毁会话,请调用 destroy()。

        Session 可以像数组一样使用来设置和获取会话数据。例如,

        $session = new Session;
        
        $session->open();
        
        $value1 = $session['name1'];  // get session variable 'name1'
        
        $value2 = $session['name2'];  // get session variable 'name2'
        
        foreach ($session as $name => $value) // traverse all session variables
        
        $session['name3'] = $value3;  // set session variable 'name3'
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-11-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多