`
zccst
  • 浏览: 3296025 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在yii中使用session和cookie

    博客分类:
  • YII
 
阅读更多
作者:zccst


2014-6-10
yii 操作session
http://blog.sina.com.cn/s/blog_664c9f650100yqkt.html





一,在Yii中使用session
1,CHttpSession
与原生态php5的session使用差别是,php5使用session_start();$_session['key'] = $value;
在yii中,session已经被封装。
To start the session, call open(); To complete and send out session data, call close(); To destroy the session, call destroy().

If autoStart is set true, the session will be started automatically when the application component is initialized by the application.

/***** 方式一、实例添加 *****/
$session=new CHttpSession;
$session->open();
$value1=$session['name1'];

/***** 方式二、直接调用应用添加 *****/
Yii::app()->session->add('name','foobar');
Yii::app()->session->add('name2','foobar');
Yii::app()->session->add('name3','foobar');
//或者
$session = Yii::app()->session;
$session['key'] = 'value';
var_dump($session['key']);
 
//遍历
foreach($session as $name=>$value)


一个实例,
$session = new CHttpSession;
$session->open();
		
$user_id = $this->user->id;
$sessionKey = $user_id.'_is_sending';
		
if(isset($session[$sessionKey])){
	$first_submit_time = $session[$sessionKey];
	$current_time      = time();
	if($current_time - $first_submit_time < 10){
		$session[$sessionKey] = $current_time;
		$this->response(array('status'=>1, 'msg'=>'不能在10秒钟内连续发送两次。'));
	}else{
		unset($session[$sessionKey]);//超过限制时间,释放session";
	}
}

//第一次点击确认按钮时执行
if(!isset($session[$sessionKey])){
	$session[$sessionKey] = time();
}
		
var_dump($sessionKey);var_dump($session[$sessionKey]);exit();


在index.php
在$app->run();前
$session = Yii::app()->session;
session_set_save_handler(
	array($session,'openSession'),
	array($session,'closeSession'),
	array($session,'readSession'),
	array($session,'writeSession'),
	array($session,'destroySession'),
	array($session,'gcSession')
);



2,CDbHttpSession
CDbHttpSession继承自 CHttpSession ,把session数据存储在数据库中(表名是YiiSession),
The table name can be changed by setting sessionTableName. If the table does not exist, it will be automatically created if autoCreateSessionTable is set true.

The following is the table structure:
CREATE TABLE YiiSession
(
    id CHAR(32) PRIMARY KEY,
    expire INTEGER,
    data TEXT
)

CDbHttpSession relies on PDO to access database.

By default, it will use an SQLite3 database named 'session-YiiVersion.db' under the application runtime directory. You can also specify connectionID so that it makes use of a DB application component to access database.

When using CDbHttpSession in a production server, we recommend you pre-create the session DB table and set autoCreateSessionTable to be false. This will greatly improve the performance. You may also create a DB index for the 'expire' column in the session table to further improve the performance.

CREATE TABLE `YiiSession` (
  `id` char(32) NOT NULL,
  `expire` int(11) default NULL,
  `data` text,
  PRIMARY KEY  (`id`),
  KEY `expire` (`expire`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


例,在../config/main.php中配置
'session'=>array(
			'class' => 'CDbHttpSession',
			'autoStart' => true,
			'sessionTableName'=>'YiiSession',
			'autoCreateSessionTable'=> false,
			'connectionID'=>'db',
		),




二,在Yii中使用cookie
Yii实现了一个cookie验证机制,可以防止cookie被修改。启用之后可以对cookie的值进行HMAC检查。
Cookie验证在默认情况下是禁用的。如果你要启用它,可以编辑应用配置 中的组件中的CHttpRequest部分。

一定要使用经过Yii验证过的cookie数据。使用Yii内置的cookies组件来进行cookie操作,不要使用$_COOKIES。

实例:
// 检索一个名为$name的cookie值
$cookie=Yii::app()->request->cookies[$name];
$value=$cookie->value;
......
// 设置一个cookie
$cookie=new CHttpCookie($name,$value);
Yii::app()->request->cookies[$name]=$cookie;



如果您觉得本文的内容对您的学习有所帮助,您可以微信:
分享到:
评论

相关推荐

    Yii2.0中的COOKIE和SESSION用法

    Yii2的Cookie主要是通过yii/web/Request和yii/web/Response进行操作的 ,通过/Yii::$app-&gt;response-&gt;getCookies()-&gt;add()添加Cookie,通过/Yii::$app-&gt;request-&gt;cookies读取Cookie. 1)添加一个Cookie &lt;?php //...

    Yii框架Session与Cookie使用方法示例

    主要介绍了Yii框架Session与Cookie使用方法,结合实例形式分析了Yii框架针对Session与Cookie的设置、获取、删除等相关操作技巧,需要的朋友可以参考下

    Yii框架操作cookie与session的方法实例详解

    本文实例讲述了Yii框架操作cookie与session的方法。分享给大家供大家参考,具体如下: cookie操作 设置cookie //获取response-&gt;cookies组件 $cookies = \Yii::$app-&gt;response-&gt;cookies; //设置cookie数组 $array_...

    解析PHP的Yii框架中cookie和session功能的相关操作

    可使用以下代码来开启和关闭session。 $session = Yii::$app-&gt;session; // 检查session是否开启 if ($session-&gt;isActive) ... // 开启session $session-&gt;open(); // 关闭session $session-&gt;close(); // 销毁session...

    yii操作session实例简介

    本文简述了Yii框架中使用session的方法,具体步骤如下: 一、与标准php代码的区别: 在Yii框架中,你不需要像标准PHP代码那样使用session_start(), 在Yii框架中,autoStart 属性缺省被设置为true,所以, 虽然没有...

    Yii2下session跨域名共存的解决方案

    前面谈过session相关配置,在开发的时候,常需要跨域共用session的是登录模块,我相信很多开发的朋友的都遇到过,只需要一个地方登录,相关联的网站也是处于登录状态。两种情况:一种9streets.cn和a.9streets.cn之间...

    Yii框架学习笔记之session与cookie简单操作示例

    本文实例讲述了Yii框架学习笔记之session与cookie操作。分享给大家供大家参考,具体如下: session操作 &lt;?php namespace app\controllers; use yii\web\Controller; class HelloController extends ...

    Yii框架中用response保存cookie,用request读取cookie的原理解析

    在学习cookie的时候,相信很多人和我有一样的疑惑?为什么保存cookie要用response,读取cookie却用request呢? 参考https://www.imooc.com/qadetail/188079 cookie是web服务器为了保存一些用户数据而创建保存在本地...

    yii操作cookie实例简介

    yii对cookie的操作常见的主要有以下几种: 1.设置cookie: $cookie = new CHttpCookie('mycookie','this is my cookie'); $cookie-&gt;expire = time()+60*60*24*30; //有限期30天 Yii::app()-&gt;request-&gt;cookies['...

    Yii框架登录流程分析

    现在我们就Yii中登录流程,来讲讲Yii开发中如何设置session,cookie和用户验证方面的一些通用知识 1. 概述 Yii是一个全栈式的MVC框架,所谓全栈式指的是Yii框架本身实现了web开发中所要用到的所有功能,比如MVC,ORM(DAO...

    在yii中新增一个用户验证的方法详解

    1.为什么要新增一个用户验证:因为我要将网站后台和前台做在同一个yii的应用中.但是前台也包含有会员的管理中心.而这两个用户验证是完全不同的,所以需要两个不同登陆页面,要将用户信息保存在不同的cookie或session中....

    史上最全韩顺平传智播客PHP就业班视频,10月份全集

    9-23 4.session③-购物车 cookie禁用后如何使用session session防用户非法登录 9-23 5.session④-验证码防恶意攻击 9-23 6.session⑤-session配置 session的gc机制 自定义session处理器 9-24 0.回顾 9-24 1.回顾2 9-...

    史上最全传智播客PHP就业班视频课,8月份视频

    9-23 4.session③-购物车 cookie禁用后如何使用session session防用户非法登录 9-23 5.session④-验证码防恶意攻击 9-23 6.session⑤-session配置 session的gc机制 自定义session处理器 9-24 0.回顾 9-24 1.回顾2 9-...

    (全)传智播客PHP就业班视频完整课程

    9-23 4.session③-购物车 cookie禁用后如何使用session session防用户非法登录 9-23 5.session④-验证码防恶意攻击 9-23 6.session⑤-session配置 session的gc机制 自定义session处理器 9-24 0.回顾 9-24 1.回顾2 9-...

    史上最全韩顺平传智播客PHP就业班视频,9月份全集

    9-23 4.session③-购物车 cookie禁用后如何使用session session防用户非法登录 9-23 5.session④-验证码防恶意攻击 9-23 6.session⑤-session配置 session的gc机制 自定义session处理器 9-24 0.回顾 9-24 1.回顾2 9-...

    韩顺平PHP JS JQUERY 所有视频下载种子 货真价实

    9-23 4.session③-购物车 cookie禁用后如何使用session session防用户非法登录 9-23 5.session④-验证码防恶意攻击 9-23 6.session⑤-session配置 session的gc机制 自定义session处理器 9-24 0.回顾 9-24 1.回顾2 9-...

Global site tag (gtag.js) - Google Analytics