不言不语

您现在的位置是: 首页 >  PHP  >  ThinkPHP

ThinkPHP

php操作Cookie

2022-05-29ThinkPHP
在很多场景中,我们也会用到COOKIE。SESSION和COOKIE的异同是什么,你只需要记住以下几点:

一、SESSIONCOOKIE的异同是什么,你只需要记住以下几点:

  • SESSION存在服务器端,相对比较安全。

  • COOKIE存在客户端,相对比较危险,因为它把信息暴露在外面。

  • 两者的存储都是用key/value的方式。

大家用到最多的COOKIE操作就是记住登录状态了,如果勾选了记住登录状态,程序就会把你的账号密码等信息保存在浏览器的COOKIE中,下一次进入此网站登录页,它就会优先读取COOKIE里的账号信息,这样就可以做到用户不用再次输入账户名和密码。

二、为什么说COOKIE不安全,我们可以通过以下操作认识到这点:

默认大家用的都是chrome浏览器哈!!!

-->点击右上角打开浏览器菜单栏->选择设置->显示高级设置->隐私设置:

132af6500cc4671257e9a99dcb1027c1_751x425.png

-->点击内容设置,我们就可以看到COOKIE的相关内容了:

af20081450516a2acc527483f786b90f_770x784.png

-->点击所有COOKIE和网站数据:

62ac0d50e384c9c316d90e6a9c6b7e3a_891x779.png

-->你点击每一条会发现,原来我们的COOKIE数据就这样暴露在浏览器里了!所以很不安全。

那我们就因为它不安全就不要用COOKIE了吗?答案是:当然要用!COOKIE用来保存和服务器脱离也可以使用的数据,如果不用COOKIE怎样实现登录信息的保存?其实很多场景中我们都需要它,只是尽量不要把用户的敏感信息保存到COOKIE里就好,尽量在保存cookie的时候进行一下加密。

ThinkPHP5.0使用think\Cookie类进行Cookie的操作管理。

三、对Cookie进行初始化

  • 下载的TP5核心版默认进行了Cookie的初始化
    你可以在配置文件config.php中找到如下内容:
    8c72c5a1f2ae7b506acd77ea3f20fd8c_715x421.png

可以看到,Cookie是默认开启的,因此我们可以直接使用Cookie和调用Cookie类的方法!

  • 在模块中指定特有的配置参数

  'cookie'                 => [
        // cookie 名称前缀
        'prefix'    => '',
        // cookie 保存时间
        'expire'    => 0,
        // cookie 保存路径
        'path'      => '/',
        // cookie 有效域名
        'domain'    => '',
        //  cookie 启用安全传输
        'secure'    => false,
        // httponly设置
        'httponly'  => '',
        // 是否使用 setcookie
        'setcookie' => true,
    ],
  • 在控制器中进行初始化

使用Cookie

Cookie::init([
    'prefix'         => 'tommy_',
    'expire'        =>3600,
    'path'           =>'/']);

使用助手函数

cookie([
    'prefix'         => 'tommy_',
    'expire'        =>3600,
    'path'           =>'/']);

四、使用Cookie类进行基础操作

  • 指定有效期

若不指定有效期,默认为0,即永久有效。

// 设置Cookie 有效期为 3600秒Cookie::set('name','value',3600);
  • 指定前缀

// 设置cookie 前缀为tommyCookie::set('name','value',['prefix'=>'tommy_','expire'=>3600]);
  • 支持数组

Cookie::set('name',['Tommy',24,'男']);
  • 取值

 Cookie::get('name');
 //若不存在,返回NULL
  • 获取指定前缀的值

Cookie::get('name','tommy_');
  • 判断是否赋值

 Cookie::has('name');
 //赋值返回true,未赋值返回false
  • 判断指定前缀的cookie值是否存在

Cookie::has('name','tommy_');
  • 删除指定值

 Cookie::delete('name');
  • 删除指定前缀的值

 Cookie::delete('name','tommy_');
  • 清空Cookie

Cookie::clear();
  • 清空指定前缀Cookie

Cookie::clear('tommy_');

五、使用助手函数cookie()进行基础操作

  • 初始化

cookie([
	'prefix' => 'tommy_',
    	'expire' => 3600
    ]);
  • 赋值

cookie('name','Tommy');
  • 取值

 cookie('name');
 //若不存在,返回NULL
  • 判断是否赋值

cookie('?name');
 //赋值返回true,未赋值返回false
  • 删除指定值

cookie('name',null);
  • 清除Cookie

这里要注意,使用助手函数清除cookie一定要指定前缀,所以使用助手函数设置cookie时要指定前缀哦~

cookie(null,'tommy_');


文章评论