zoukankan      html  css  js  c++  java
  • Yii2 中cookie的用法(2)

    设置Cookie
    PHP
    
    setcookie("name", "Larry", time()+3600);
    Yii2
    
    $cookies = Yii::$app->response->cookies;
     
    $cookies->add(new yiiwebCookie([
        'name' => 'name',
        'value' => 'Larry',
        'expire'=>time()+3600
    ]));
    
    创建名为"name"的cookie,赋值为"Larry",并且规定该cookie一小时后失效
    
    expire这是一个UNIX时间戳,如果设置为0,或省略,该Cookie将在浏览器关闭时消失
    
    获取Cookie
    PHP
    
    $name=$_COOKIE["user"]
    Yii2
    
    $cookies = Yii::$app->request->cookies;//注意此处是request
    $language = $cookies->get('user', 'defaultName');//设置默认值
    
    检查Cookie
    PHP
    
    if(isset($_COOKIE["user"])){ }
    Yii2
    
    $cookies = Yii::$app->request->cookies;
     
    if (isset($cookies['user'])){ }
    if ($cookies->has('user')){ }
    if (isset($cookies['user'])){ }
    
    删除Cookie
    PHP
    
    setcookie("user", "", time()-3600);//把失效日期设置为过去1小时
    unset($_COOKIE['user']);
    ###Yii2
    $cookies = Yii::$app->request->cookies;
     
    $cookies->remove('user');
    
    常见问题
    
    A.Cookie的key不能含“.” 符号,会被解析成“_”,导致具有以上符号的key获取不到Cookie的bug
    
    B.区分Yii2中 Yii::$app->request->cookies 和 Yii::$app->response->cookies 不仔细容易直接复制粘贴了。
    
    1.如果把第一个用来设置Cookie,会报错:`The cookie collection is read only`
    
    2.如果把第二个用来获取Cookie,程序正常执行未发生异常,但会获取不到Cookie,不容易察觉。。。
  • 相关阅读:
    带锚点URL同一页面滚动效果的实现
    思路先行
    transliteration -- 2个功能
    html5 section article
    fields('t')
    使用Bootstrap
    JavaScript Switch
    菜单
    写一个博客页面
    自动适应
  • 原文地址:https://www.cnblogs.com/wuheng1991/p/7389843.html
Copyright © 2011-2022 走看看