一,在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是两种常见的用户数据存储机制,它们在Web应用程序中扮演着重要的角色。下面将详细介绍这两种机制的使用方法。 ### Cookie **1. 添加Cookie** Cookie在Yii2中主要通过`yii\web\...
通过分析和学习这个项目,开发者不仅可以掌握Yii框架的使用,还能了解到商城系统设计的全过程,包括需求分析、数据库设计、前后端交互、安全策略等多个方面,这对于提升Web开发技能和项目经验非常有益。
Yii可以通过集成第三方支付API,如支付宝、微信支付等,实现在线支付功能。支付成功后,订单状态会自动更新,同时可能触发库存管理系统的相应操作。 在前端,Yii支持AJAX,可以实现异步交互,提升用户体验。比如,...
3. **Templating**:灵活的模板引擎,支持 Blade 和 Twig 等第三方模板引擎。 4. **Console Commands**:提供命令行工具,方便执行后台任务,如定时任务、迁移等。 综上所述,Yii 2.0.chm 手册涵盖了框架的基本...
涉及的主要组件有 User 组件、Session 和 Cookie 管理。 2. **圈子模块**:这可能涉及到动态内容发布、评论、点赞等功能。可以使用 Yii2 的关系查询和事件机制来处理用户交互。Ajax 翻页和图片延迟加载则需要利用 ...
理解$_GET和$_POST全局数组,以及如何使用session和cookie进行用户状态管理是关键。 4. **PHP与数据库交互**:MySQL是PHP常用的数据库系统,学习如何使用PHP连接数据库、执行SQL查询、处理结果集、事务处理以及预...
- 探讨Cookie的原理和使用方法,包括设置、读取和删除。 第二十六讲至第三十讲:面向对象编程 - 介绍面向对象编程的基本概念,如类、对象、继承、封装和多态。 - 学习如何定义类,创建对象,以及使用魔术方法。 第...
Yii2 是一个高性能的、基于...总之,这个“basic:电子商务网站,由 yii2 制作”的项目是一个使用 Yii2 框架构建的基础电子商务平台,通过理解和学习这个项目,开发者可以掌握如何利用 Yii2 实现一个完整的电商系统。
12. 邮件服务:用户注册、订单确认等场景可能需要用到邮件发送功能,PHP的mail()函数或者第三方SMTP库如PHPMailer可能会被使用。 通过深入学习和分析这个基于PHP的188商城系统源码,开发者不仅可以提升PHP技能,还...
ThinkPHP3.1也支持YII和PHPUnit等第三方测试框架,使得开发者能够更好地进行代码质量控制。 总的来说,《ThinkPHP3.1 完全开发手册20121211.CHM》是一本全面而实用的指南,无论你是初学者还是经验丰富的开发者,都...
4. **cookies**和**session**:了解它们的工作机制,以及如何设置和读取cookie和session数据。 **三、数据库交互** 1. **MySQL连接**:使用mysqli或PDO扩展与MySQL数据库建立连接。 2. **SQL查询**:编写SELECT、...
11. **第三方库和框架**:为了简化开发,可能会引入一些PHP的第三方库,如Composer管理的库,或者基于Laravel、Yii等PHP框架构建。 12. **API接口**:如果程序允许其他应用接入,可能会包含API接口的编写,涉及HTTP...
11. **第三方库和框架**:为了提高开发效率和代码质量,开发者可能会引入一些第三方库,如Composer管理的Laravel、Symfony或Yii框架,或者jQuery、Bootstrap等前端库。 12. **API接口**:如果系统支持与其他服务...
- **session和cookie**:了解session和cookie的工作原理,使用session_start()启动会话,$_SESSION数组存储会话数据。 9. **PHP框架** - **框架介绍**:了解Laravel、Yii、Symfony等主流PHP框架,理解MVC设计模式...
7. **会话控制**:掌握如何使用session和cookie进行用户状态管理和身份验证,为构建动态网站提供基础。 8. **数据库交互**:讲解MySQL数据库的基本操作,如创建、查询、更新、删除数据,以及使用PHP连接和操作MySQL...
此外,还有许多第三方扩展,如GD库(图像处理)、curl(网络请求)、JSON(数据交换格式)等。 10. **PHP与Web框架**:了解如何使用PHP与其他Web框架集成,如Laravel、Symfony、Yii等,以提升开发效率和代码质量。 ...
11.Session与Cookie:掌握如何使用session和cookie来管理用户状态和会话信息。 12.JSON与Ajax:理解JSON数据格式,以及如何通过Ajax异步更新页面内容。 四、移动开发 13.移动适配:了解如何为不同的移动设备优化PHP...
9. **第三方库和框架**:如果项目使用了PHP框架(如Laravel、Symfony、Yii等)或第三方库(如Composer管理的),则可以学习到如何整合和利用这些资源提升开发效率。 10. **性能优化**:查看源码中的缓存机制(如...
7. **session和cookie管理**:session和cookie是维持用户状态的常用手段。了解它们的工作机制、如何设置和管理,以及在不同场景下的选择,对构建动态网站至关重要。 8. **错误和日志处理**:良好的错误处理和日志...
5. **表单处理与Cookie、Session**:了解如何接收、验证和处理用户提交的表单数据,使用Cookie和Session进行状态管理。 6. **面向对象编程**:深入理解类、对象、继承、封装、多态等概念,以及如何创建和使用自定义...