Yii2框架(四)Seesion及cookie操作

简介: 服务器存储session就是基于浏览器的cookie实现的,后端存储session,生成sessionid传递给前端,存储在cookie中,因此如果浏览器禁用cookie,那么session可能就不好用了。cookie在开发中也是可以存储一些我们常用的值,当然,html5增加了两个新的属性吧,sessionstorge以及localstorge,其二者原理和session相同,只是声明周期和存储机制不太相同。

QQ图片20220425211709.png

今天看一下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相同,只是声明周期和存储机制不太相同,具体使用哪一个,还是要看你自己的需求。



目录
相关文章
|
6月前
|
存储 Web App开发 安全
Django中Cookie相关操作
Django中Cookie相关操作
|
存储 JavaScript
js -cookie的操作
cookie是存储在客户端浏览器中的一段文本信息。
|
6月前
|
存储 JavaScript 前端开发
JavaScript DOM 操作:解释一下 cookie、sessionStorage 和 localStorage 的区别。
Cookie是服务器发送至客户端的文本信息,会随每个请求发送回服务器,适合控制会话状态但可能暴露隐私。SessionStorage仅在当前会话中存储数据,关闭浏览器后清除,适合临时存储如登录状态。LocalStorage则持久保存数据,即使关闭浏览器也不会清除,适用于存储长期设置。三种方式各有侧重,应按需求选择。
45 0
|
6月前
|
存储 前端开发 Java
【源码共读】在前端如何操作 Cookie
【源码共读】在前端如何操作 Cookie
112 1
|
存储 JavaScript 前端开发
cookie相关操作
cookie相关操作
54 0
|
JavaScript 前端开发 Java
【JavaEE】使Cookie与Session失效-Servlet上传文件操作-优化表白墙
虽然Cookie和Session都是暂时存在的,不久就会被删掉,但是我们要退出登录的时候,就不能等待其自然消除了~
73 0
|
存储 前端开发 Java
【JavaEE】使Cookie与Session失效-Servlet上传文件操作-优化表白墙
虽然Cookie和Session都是暂时存在的,不久就会被删掉,但是我们要退出登录的时候,就不能等待其自然消除了~
105 0
|
测试技术
Selenium 操作表单元素、行为链、操作Cookie和页面等待
Selenium 操作表单元素、行为链、操作Cookie和页面等待
115 0
|
存储 数据安全/隐私保护
servelt的cookie操作
servelt的cookie操作
|
Java 开发者
Cookie操作|学习笔记
快速学习Cookie操作
Cookie操作|学习笔记