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_');
