饼干与会话在Yii框架中的作用是什么

  介绍

今天就跟大家聊聊有关饼干与会话在Yii框架中的作用是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

<强>会话

和请求和响应类似,默认可通过为Yii \ web \会话实例的会话应用组件来访问。

<强>开启和关闭会议

可使用以下代码来开启和关闭会话。

session 美元;=,Yii:应用程序→美元会话;//,检查会话是否开启,   if (会话→美元isActive),…//,开启会话   会话→美元open ();//,关闭会话   会话→美元close ();//,销毁会话中所有已注册的数据   会话→美元毁灭();

多次调用yii \ web \会话::open()和yii \ web \会话::关闭()方法并不会产生错误,因为方法内部会先检查会话是否已经开启。

<强>访问会话数据

访问数据存储在会话中,您可以执行以下操作:可使用如下方式访问会话中的数据:

session 美元;=,yii:应用程序→美元会话;//,获取会话中的变量的值,以下用法是相同的:   language 美元;=,会话→美元得到(& # 39;语言# 39;);   美元$ language =,会话(& # 39;语言# 39;);   $ language =,收取($ _SESSION[& # 39;语言# 39;]),?,_SESSION美元[& # 39;语言# 39;],:,空;//,设置一个会话变量,以下用法是相同的:   美元会话→设置(& # 39;语言# 39;,,& # 39;en - us # 39;);   $会话[& # 39;语言# 39;],=,& # 39;en - us # 39;;   $ _SESSION[& # 39;语言# 39;],=,& # 39;en - us # 39;;//,删除一个会话变量,以下用法是相同的:   美元会话→删除(& # 39;语言# 39;);   设置(会话美元[& # 39;语言# 39;]);   设置($ _SESSION[& # 39;语言# 39;]);//,检查会话变量是否已存在,以下用法是相同的:   if (会话→美元(& # 39;语言# 39;)),…   if (收取($会话[& # 39;语言# 39;])),…   if (收取($ _SESSION[& # 39;语言# 39;])),…//,遍历所有会话变量,以下用法是相同的:   foreach  (session 美元;as  name 美元;=祝辞,美元值),…   foreach  (_SESSION 美元;as  name 美元;=祝辞,美元值),…

补充:当使用会话组件访问会话数据时候,如果会话没有开启会自动开启,这和通过$ _SESSION不同,$ _SESSION要求先执行session_start ()。
当会话数据为数组时,会话组件会限制你直接修改数据中的单元项,例如:

session 美元;=,Yii:应用程序→美元会话;//,如下代码不会生效   $会话[& # 39;验证码# 39;][& # 39;数字# 39;],=,5;   $会话[& # 39;验证码# 39;][& # 39;一生# 39;],=,3600;//,如下代码会生效:   $会话[& # 39;验证码# 39;],=,(   & # 39;才能号码# 39;,=祝辞,5,   & # 39;才能一生# 39;,=祝辞,3600年,   ];//,如下代码也会生效:   echo 会话美元[& # 39;验证码# 39;][& # 39;一生# 39;];

可使用以下任意一个变通方法来解决这个问题:

session 美元;=,Yii:应用程序→美元会话;//,直接使用_SESSION 美元;(确保Yii::应用程序→美元会话→打开(),已经调用)   $ _SESSION[& # 39;验证码# 39;][& # 39;数字# 39;],=,5;   $ _SESSION[& # 39;验证码# 39;][& # 39;一生# 39;],=,3600;//,先获取会话数据到一个数组,修改数组的值,然后保存数组到会话中   美元$ captcha =,会话(& # 39;验证码# 39;);   $ captcha[& # 39;数字# 39;],=,5;   $ captcha[& # 39;一生# 39;],=,3600;   $会话[& # 39;验证码# 39;],=,美元验证码;//,使用ArrayObject 数组对象代替数组   $会话[& # 39;验证码# 39;],=,new  \ ArrayObject;   …   $会话[& # 39;验证码# 39;][& # 39;数字# 39;],=,5;   $会话[& # 39;验证码# 39;][& # 39;一生# 39;],=,3600;//,使用带通用前缀的键来存储数组   $会话[& # 39;captcha.number& # 39;],=, 5;   $会话[& # 39;captcha.lifetime& # 39;],=, 3600;

为更好的性能和可读性,推荐最后一种方案,也就是不用存储会话变量为数组,而是将每个数组项变成有相同键前缀的会话变量。

<>强自定义会话存储

yii \ web \会话类默认存储会话数据为文件到服务器上,yii提供以下会话类实现不同的会话存储方式:

<李>

yii \ web \ DbSession:存储会话数据在数据表中

<李>

yii \ web \ CacheSession:存储会话数据到缓存中,缓存和配置中的缓存组件相关

<李>

yii \复述\会话:存储会话数据到以复述,作为存储媒介中

<李>

yii \ mongodb \会话:存储会话数据到mongodb。

饼干与会话在Yii框架中的作用是什么