这是我参与11月更文挑战的第20天,活动详情查看:2021最后一次更文挑战
今天看一下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相同,只是声明周期和存储机制不太相同,具体使用哪一个,还是要看你自己的需求
有好的建议,请在下方输入你的评论。 欢迎访问个人博客 guanchao.site
欢迎访问小程序: