Session 组件

Session(会话)组件可以让你保持一个用户的 "状态" ,并跟踪他在浏览你的网站时的活动。

调用 运行环境
mix\web\Session \Mix::app()->session MixHttpd/Apache/PHP-FPM

Session 组件暂时只支持 Redis,使用前需先安装 Redis 数据库。

组件配置

App配置文件中,该组件的默认配置如下:

// Session
'session' => [
    // 类路径
    'class'   => 'mix\web\Session',
    // 保存处理者
    'saveHandler' => [
        // 类路径
        'class'    => 'mix\client\Redis',
        // 主机
        'host'     => '127.0.0.1',
        // 端口
        'port'     => 6379,
        // 数据库
        'database' => 0,
        // 密码
        'password' => '',
    ],
    // 保存的Key前缀
    'saveKeyPrefix'  => 'MIXSSID:',
    // 生存时间
    'expires' => 7200,
    // session名
    'name'    => 'MIXSSID',
],

saveHandler 全部常量明细:

  • mix\web\Session::HANDLER_REDIS

使用范例

用户登陆控制器:

// 登陆方法
public function actionLogin()
{
    /* 验证账号密码成功后 */
    // 保存会话信息
    $userinfo = [
        'uid'      => 1088,
        'openid'   => 'yZmFiZDc5MjIzZDMz',
        'username' => '小明',
    ];
    \Mix::app()->session->set('userinfo', $userinfo);
    // 响应
    return $this->render('login', ['message' => '新增成功']);
}

效验Session:

需创建一个 BaseController 控制器,然后其他控制器继承该控制器。

// BaseController 的初始化事件
public function onInitialize()
{
    parent::onInitialize(); // TODO: Change the autogenerated stub
    $userinfo = \Mix::app()->session->get('userinfo');
    if (empty($userinfo)) {
        \Mix::app()->response->redirect('/');
        \Mix::app()->response->send();
        \Mix::finish();
    }
}

set 方法

变量赋值。

\Mix::app()->session->set('name', '小华');

get 方法

获取变量的值。

name不存在时返回null。

\Mix::app()->session->get('name');

has 方法

判断变量是否存在。

\Mix::app()->session->has('name');

delete 方法

删除变量。

\Mix::app()->session->delete('name');

clear 方法

清空全部变量。

\Mix::app()->session->clear();

getSessionId 方法

获取SessionId。

\Mix::app()->session->getSessionId();