一、PHP Cookie
1)Cookie是什么?为什么会有Cookie?
Cookie是客户端存储数据的手段,并在请求服务器时自动携带cookie数据。(Cookie相当于一把钥匙)
按照我的理解,Cookie主要是解决http的无状态,什么是无状态呢?简单来说就是当访问一个页面请求后再请求另一个页面时无法判断两次请求来自同一个用户。
会话原理:
在PHP中实现会话的原理是为用户分配一个唯一的加密ID,并保存在用户客户端,在整个会话时间周期内有效。而这个加密ID一般情况使用cookie来保存,但在一些不支持cookie的浏览器也可以通过url传递。
注意:Cookie是由浏览器管理的,使用不同浏览器Cookie会不同,举个例子就是你如果在谷歌浏览器浏览并登录一个网页之后,在火狐浏览器在去浏览同一个网页时,它并没有原来已经登陆的状态。
2)Cookie的语法
setcookie(name, value, expire, path, domain,secure,httponly);
1,name就是Cookie的名字
2,value就是Cookie的值
3,exprie就是Cookie的生命周期,默认为0:会话状态(就是关闭浏览器Cookie就结束没有了),单位为秒s,但是注意1不是从现在时间开始后1秒,而是从1970年开始,time()+1才是从现在时间开始后1秒。
4,path就是Cookie的路径,默认是(根)在整个域名都可以使用,而假设你设置为\app,只有在app目录及其子目录里面才可以使用。
5,domain就是Cookie的域名,当你用domain设置一个主域名后,主域名的子域名都可以访问这个Cookie
3)如何创建Cookie?
setcookie() 函数用于设置 cookie。
注释:setcookie() 函数必须位于 标签之前。
例:1,设置会话cookie,当关闭浏览器时自动删除
setcookie('web','csdn.com');
2,设置七天内有效的cookie
setcookie('web','csdn.com',time()+60*60*24*7);
3,只允许cookie在 /app 访问路径中有效
setcookie('web','csdn.com',0,'/app')
4,设置访问域名
setcookie('web','csdn.com',0,'/','php.test')
5,设置只允许https访问
setcookie('web','csdn.com',0,'/','',true);
6,不允许javascript操作cookie
setcookie('web','csdn.com',0,'','',false,false,true);
7,将cookie的到期时间设置为过去时间,就可以删除cookie。
setcookie('name','',1);
4)如何读取Cookie?
因为cookie保存在客户端并在请求时提交到后台服务器,所以可以在前台与后台访问到cookie。
1,前台使用 document.cookie 获取cookie数据
2,后台使用超全避数组$_COOKIE读取
print_r($_COOKIE);
5)当浏览器不兼容cookie时,使用表单传递数据(之前文章有学习过)