Yii2.0中session有效期设置原理

1、session设置方法

$session = Yii::$app->session;
//当session没有值 或 过期时间到 则重新付值
if(!isset($session[‘user‘]) || $session[‘user‘][‘expire_time‘] < time()){
$data = [
‘title‘ => ‘data‘, //数据
‘expire_time‘ => time() + 10, //这里设置10秒过期
];
$session[‘user‘] = $data;
}

var_dump($session[‘user‘]);

2、session其他操作:

yii2打开session
use yii\web\Session;

$session = Yii::$app->session;
// check if a session is already open
if ($session->isActive) ...
// open a session
$session->open();
// close a session
$session->close();
// destroys all data registered to a session.
$session->destroy();

设置session

$session = Yii::$app->session;
$session->set(‘user_id‘, ‘1234‘);
//OR
$session[‘user_id‘] = ‘1234‘;
//OR
$_SESSION[‘user_id‘] = ‘1234‘;

读取session

$session = Yii::$app->session;

$user_id = $session->get(‘user_id‘);
//OR
$user_id = $session[‘user_id‘];
//OR
$user_id = isset($_SESSION[‘user_id‘]) ? $_SESSION[‘user_id‘] : null;
销毁session
$session = Yii::$app->session;
$session->remove(‘user_id‘);
//OR
unset($session[‘user_id‘]);
//OR
unset($_SESSION[‘user_id‘]);

数组session的读取与设置

$session = Yii::$app->session;
$session[‘user‘] = [
‘id‘ => 1,
‘username‘ => ‘yiiuser‘,
];
echo $session[‘user‘][‘id‘];
echo $session[‘user‘][‘username‘];

$session[‘user.id‘] = 1;
$session[‘user.username‘] = ‘yiiuser‘;

ps:
设置session过期时间不起作用,无效。解决办法:
Problem is in cookies expire time. When it timed out, user is logout. Solution, for changing cookies expire time is in configuration for session component set for cookies lifetime:

‘components’ => [
‘session’ => [
‘class’ => ‘yii\web\Session’,
‘cookieParams’ => [‘lifetime’ => 7 24 60 * 60]
],
]
When user login, cookies expire time in current example is after week.
问题在于cookie的过期时间,设置cookie的生命周期时间lifttime就可以了

原文地址:http://blog.51cto.com/13238147/2351511

时间: 2024-10-17 13:37:02

Yii2.0中session有效期设置原理的相关文章

在VC++6.0中给对话框设置背景色或者背景图片

/*********************************************************** *说明: 在VC++6.0中给对话框设置背景色或者背景图片 *备注:测试代码的对话框程序的工程名为:BJ *原理:在OnPaint()中加入代码 ***********************************************************/ // 注意:去掉相应以 /* */ 注释的注释符号后代码生效 void CBJDlg::OnPaint() {

session有效期设置的两种方式

/**session有效期设置的两种方式: * 1.代码设置:session.setMaxInactiveInterval(30);//单位:秒.30秒有效期,默认30分钟. * 2.web.xml中设置: * <!-- 单位:分钟,默认就是30分钟. --> * <session-config> * <session-timeout>30</session-timeout> * </session-config> */ 原文地址:https:/

在Yii2.0中实现计划任务(cron)

以下由我们在信易网络公司开发项目的时候终结出的一些经验 Create console application 创建命令行应用 In advance template there is already a file yii. And there is no need to run it as php, it is Linux script. 在高级模版中的 yii 文件,它是一个 Linux 脚本,不需要使用PHP来运行. Create cron service command 创建计划任务服务命

hadoop2.0中yarn的运行原理

Yarn的简单介绍 我们知道在离线大数据处理领域中,hadoop是目前无可厚非的处理架构,到目前为止hadoop已经有三个大版本,每个版本下都有架构方面的调整. 在hadoop1.0中有一些弊端,比如hdfs元数据信息保存的单节点故障,并且任务计算框架只能使用mapreduce,而且造成了任务管理器的压力过大,因此在hadoop2.0中加入了yarn资源统一管理的机制,不仅解决了元数据单节点故障问题(双namenode)而且实现了元数据的实时热备(共享机制JournalNode),在hdfs和m

Yii2.0中Yii::$app与Yii 1.0中Yii:app()的理解

一直不明白Yii::$app与Yii::app(),查找yii框架源码后如下记录分享 (1)在Yii1.0中Yii::app()返回的是你在index.php里创建的CWebApplication实例,在对应的CWebApplication,入口文件: Yii::createWebApplication($configFile)->run(); 对应的类中查找: public static function createWebApplication($config=null){return se

Yii2.0中Mailer收发邮件详解

Yii2.0封装的类足够强大,Mailer的使用方法做一个总结:1.先在main-local.php中做好配置: return [//....'components' => ['mailer' => ['class' => 'yii\swiftmailer\Mailer',],],]; 详细如下: return [//....'components' => [ 'viewPath' => '@common/mail', 'useFileTransport' =>fals

CI框架3.0关于session的设置改动及存数据库的使用方法

Session的设置跟之前有点不一样 我们来看看2.0版本中的设置是什么样子的: $config['sess_cookie_name']= 'test_session'; $config['sess_expiration']= 7200; $config['sess_expire_on_close']= FALSE; $config['sess_encrypt_cookie']= FALSE; $config['sess_use_database']= TRUE; $config['sess_t

解析 PHP 中 session 的实现原理以及大网站应用应该注意的问题

一 PHP SESSION原理 session 是在服务器端保持用户会话数据的一种方法,而 cookie 是在客户端保持用户数据.HTTP 协议是一种无状态协议,服务器响应完之后就失去了与浏览器的联系.那么,服务器是如何记住众多用户的会话数据呢? 首先要将客户端和服务器端建立一对一联系,每个客户端都得有一个唯一标识,这样服务器才能识别出来.建立唯一标识的方法有两种:cookie 或者通过 GET 方式指定.默认配置的 PHP 使用 session 的时候会建立一个名叫 "PHPSESSID&qu

Yii2.0中(Hash is invalid error)验证错误

老项目数据迁移到Yii2.0后,密码仍使用md5加密.但是通过yii2.0的验证类的validatePassword($password)函数验证始终返回false: public function validatePassword($password){if(is_null($this->password)) return false;return Yii::$app->getSecurity()->validatePassword($this->salt . $password