Yii 操作 Session [ 未指定版本 ]
首先,在Yii框架中,你不需要像标准PHP代码那样使用session_start()
,
在 Yii 框架中,autoStart 属性缺省被设置为true,所以,
虽然没有使用 session_start()
,你仍然可以使用 $_SESSION 全局变量,但最好使用
Yii框架封装的 Yii::app->session:
设置session变量:Yii::app()->session['var']='value';
使用: echo Yii::app()->session['var'];
移除:unset(Yii::app()->session['var']);
更为复杂一点的使用时如何配置你的session
配置项可设在 protected/config/main.php的components中:
'session'=>array(
'autoStart'=>false(/true),
'sessionName'=>'Site Access',
'cookieMode'=>'only',
'savePath'='/path/to/new/directory',
),
将session保持在数据库的设置:
'session' => array (
'class' => 'system.web.CDbHttpSession',
'connectionID' => 'db',
'sessionTableName' => 'actual_table_name',
),
好,还有什么呢?对了,为了调试,有时需要知道当前用户的session ID,
该值就在 Yii::app()->session->sessionID
中。
最后,当用户退出登录(logout),你需要消除痕迹,可使用:
Yii::app()->session->clear()
移去所有session变量,然后,调用
Yii::app()->session->destroy()
移去存储在服务器端的数据。
YiiSoEasy 中国
注册时间:2014-11-25
最后登录:2024-10-19
在线时长:189小时7分
最后登录:2024-10-19
在线时长:189小时7分
- 粉丝210
- 金钱10947
- 威望120
- 积分14037
共 5 条评论
yii2 下
如果使用
yii\web\User
的logout
方法的话,默认配置下是会把 session destroy 的/** * Logs out the current user. * This will remove authentication-related session data. * If `$destroySession` is true, all session data will be removed. * @param boolean $destroySession whether to destroy the whole session. Defaults to true. * This parameter is ignored if [[enableSession]] is false. * @return boolean whether the user is logged out */ public function logout($destroySession = true) { $identity = $this->getIdentity(); if ($identity !== null && $this->beforeLogout($identity)) { $this->switchIdentity(null); $id = $identity->getId(); $ip = Yii::$app->getRequest()->getUserIP(); Yii::info("User '$id' logged out from $ip.", __METHOD__); if ($destroySession && $this->enableSession) { Yii::$app->getSession()->destroy(); } $this->afterLogout($identity); } return $this->getIsGuest(); }
作者注意一下格式,调整好再发布,这次我帮你重新编辑了一下。
老大请教下https环境简单折腾的办法。
yii中,怎么将当前用户的id通过session传递到控制器,再存入数据库中某个外键字段?
我最近碰到一个问题。
就是https下不能登陆情况。
就算关闭csrf,能登陆但是不能获取到登陆的用户名。
比如yii——base ,在https中
如果不关csrf登陆会400错误。
但是就算关闭了,登陆之后会跳转到首页。但是不会显示用户名!
求教方法!
果断收藏
我是这两天刚刚上手Yii2的,发现一个问题,
清除session数据的时候用Yii::app()->session->clear()方法会报错,
仔细看看源码后发现已经没有clear()方法了,
建议去除某一个session的时候用Yii::app()->session->remove()方法,
它会返回被去除的这个session原来的值,没有该session就返回null,
如果想要移去所有session变量,建议用Yii::app()->session->removeAll()方法,(没有返回值)
那你很6哦