php操作Cookie
一、SESSION
和COOKIE
的异同是什么,你只需要记住以下几点:
SESSION
存在服务器端,相对比较安全。COOKIE
存在客户端,相对比较危险,因为它把信息暴露在外面。两者的存储都是用
key/value
的方式。
大家用到最多的
COOKIE
操作就是记住登录状态了,如果勾选了记住登录状态,程序就会把你的账号密码等信息保存在浏览器的COOKIE
中,下一次进入此网站登录页,它就会优先读取COOKIE
里的账号信息,这样就可以做到用户不用再次输入账户名和密码。
二、为什么说COOKIE不安全,我们可以通过以下操作认识到这点:
默认大家用的都是
chrome
浏览器哈!!!
-->点击右上角打开浏览器菜单栏->选择设置->显示高级设置->隐私设置:
-->点击内容设置,我们就可以看到COOKIE
的相关内容了:
-->点击所有COOKIE
和网站数据:
-->你点击每一条会发现,原来我们的COOKIE
数据就这样暴露在浏览器里了!所以很不安全。
那我们就因为它不安全就不要用
COOKIE
了吗?答案是:当然要用!COOKIE
用来保存和服务器脱离也可以使用的数据,如果不用COOKIE
怎样实现登录信息的保存?其实很多场景中我们都需要它,只是尽量不要把用户的敏感信息保存到COOKIE
里就好,尽量在保存cookie
的时候进行一下加密。
ThinkPHP5.0使用think\Cookie
类进行Cookie
的操作管理。
三、对Cookie
进行初始化
下载的TP5核心版默认进行了
Cookie
的初始化
你可以在配置文件config.php
中找到如下内容:
可以看到,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_');