今天看一下Yii2.0框架对session以及cookie的操作。
一:session
1:存储session
/** * 存储session */ public function actionSession() { Yii::$app->session['username'] = "111111"; Yii::$app->session['ses'] = "222222"; echo "success"; } 输出:session
2:session取值
/** * session取值 */ public function actionSess() { echo '<pre>'; var_dump(Yii::$app->session); var_dump(Yii::$app->session['username']); var_dump(Yii::$app->session['ses']); echo "success"; }
输出:
object(yii\web\Session)#53 (8) { ["flashParam"]=> string(7) "__flash" ["handler"]=> NULL ["_cookieParams":"yii\web\Session":private]=> array(1) { ["httponly"]=> bool(true) } ["frozenSessionData":"yii\web\Session":private]=> NULL ["_hasSessionId":"yii\web\Session":private]=> bool(true) ["_events":"yii\base\Component":private]=> array(0) { } ["_eventWildcards":"yii\base\Component":private]=> array(0) { } ["_behaviors":"yii\base\Component":private]=> NULL } string(6) "111111" string(6) "222222" success
3:销毁session
/** * 销毁session */ public function actionClear() { Yii::$app->session->destroy(); }
销毁之后,再次获取session,发现session为空。
二:cookie
1:cookie存储
/** * 设置cookie */ public function actionCookie() { $cookie = new \yii\web\Cookie(); $cookie -> name = 'smister'; //cookie的名称 $cookie -> expire = time() + 3600; //存活的时间 $cookie -> httpOnly = true; //无法通过js读取cookie $cookie -> value = 'cookieValue'; //cookie的值 echo "success"; } 输出success
2:cookie取值
/** * cookie取值 */ public function actionGetcok() { $cookie = \Yii::$app->request->cookies; echo "<pre>"; //返回一个\yii\web\Cookie对象 var_dump($cookie->get('name','xxx')); //直接返回Cookie的值 var_dump($cookie->getValue('name','xxxx')); //$cookie[‘smister’] 其实这样也是可以读取的 //判断一个Cookie是否存在 var_dump($cookie->has('name')); //读取Cookie的总数 var_dump($cookie->count());//$cookie->getCount();跟count一样 echo "success"; }
输出:
object(yii\web\Cookie)#57 (8) { ["name"]=> string(4) "name" ["value"]=> string(5) "Larry" ["domain"]=> string(0) "" ["expire"]=> NULL ["path"]=> string(1) "/" ["secure"]=> bool(false) ["httpOnly"]=> bool(true) ["sameSite"]=> NULL } string(5) "Larry" bool(true) int(2) success
3:删除cookie
/** * 删除cookie */ public function actionDelcok() { $cookie = Yii::$app->request->cookies->get('name'); //移除一个Cookie对象 $res = \Yii::$app->response->getCookies()->remove($cookie); var_dump($res); // 值为null,也就是说,他是没有返回值的。 echo "success"; } 输出success
以上大概就是yii2.0框架对session以及cookie的基本操作。
最后多注意一下,服务器存储session就是基于浏览器的cookie实现的,后端存储session,生成sessionid传递给前端,存储在cookie中,因此如果浏览器禁用cookie,那么session可能就不好用了。 cookie在开发中也是可以存储一些我们常用的值,当然,html5增加了两个新的属性吧,sessionstorge以及localstorge,其二者原理和session相同,只是声明周期和存储机制不太相同,具体使用哪一个,还是要看你自己的需求。