Yii2框架(四)Seesion及cookie操作

689 阅读1分钟

这是我参与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

欢迎访问小程序:

在这里插入图片描述