• 售前

  • 售后

热门帖子
入门百科

PHP中cookie知识点学习

[复制链接]
水月花郎稳 显示全部楼层 发表于 2021-10-25 19:58:55 |阅读模式 打印 上一主题 下一主题
什么是cookie
cookie,即小饼干,是生存在用户署理端(浏览器是最常见的用户署理)的一些数据片断。浏览网页时,浏览器会将 当前页面有用的 cookie放在哀求的头部发送到服务端。
cookie构成
cookie由以下几部门构成:
domain,cookie所属的域名。浏览器发送cookie时,会查抄cookie所属的域名,相符才会发送。浏览器会将tlanyan.me域下的cookie发送到www.tlanyan.me或者dev.tlanyan.me的页面哀求中,但不会发送给www.baidu.com。同样,dev.tlanyan.me的cookie不能发送给tlanyan.me,由于限定了域名为dev子域。

path,cookie所属路径。设置为/author中的cookie不会发送到/category路径下,但是设置路径为/的cookie会发送到全部页面哀求。

name, cookie的名称(键名)。

value, cookie的值(内容)。

expires,过期时间。

secure,是否仅在https时才会传送该cookie。

httponly,是否只用作http通报用。当设置为true时,浏览器端的脚本语言将无法访问到该cookie。

cookie的用途
cookie告急用在以下方面:
http是无状态的协议,为了维持会话须要额外的数据做标记,cookie是最常用的本领。常见的PHPSESSID和JSESSIONID这两类cookie,分别用在PHP和Java web应用中维持会话。

有些数据须要存放在客户端,cookie是一种选择。用户勾选“下次不再提示”后,该标志可生存到客户端,再次访问程序读取设定再决定是否显示。随着HTML 5的遍及,这部门功能正逐步被localStorage代替。

PHP端的cookie操作
读取cookie可以通过$_COOKIE超全局变量读取到用户端传来的全部cookie。$_COOKIE是一个数组,可以遍历读取发送过来的cookie的名称和值。浏览器只发送了cookie的键值到服务端,故而无法读取到cookie的domain/path/exipres等信息,由于。
PHP提供了setcookie函数来发送cookie到客户端。setcookie的函数署名是:
  1. bool setcookie ( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool $secure = false [, bool $httponly = false ]]]]]] )
复制代码
参数与cookie的构成内容相对应: expires默认为0,表示仅当前会话有用,用户关闭浏览器后该cookie将被扫除;path默认为当前页面路径,即网址末了一个反斜杠前的部门;domain默认为当前页面的域名,如果要扩大利用范围,可设置为父级域名或者顶级域名; httponly默认为false,发起设置为true克制XSS攻击。
删除cookie,只须要设置cookie的expires为过去的时间戳即可,例如 time() – 3600。以是要删除foo这个cookie,代码可以为
  1. setcookie('foo', '', time() - 3600);
复制代码
cookie的良好实践
从cookie字面意思便可看出,生存的是数据片断。web开发中cookie利用的频率比较高,应该多加以明白。以下是一些利用cookie的良好实践:
不应该在cookie中生存过大和过多的数据;
cookie在客户端和传输中是明文可见的,不应该在cookie中生存敏感信息;
为了站点和用户安全,尽大概将cookie的httponly属性设置为true;
cookie是客户端完全控制的,也属于外部输入,服务端不可盲目信托,应对其举行过滤。
其他
cookie是随哀求发送而来,随相应而设置到客户端。明白了这个过程,就可以明白一些新手常见的题目,例如以下代码:
  1. if (!isset($_COOKIE['foo']) {
  2.    setcookie('foo', 'foobar');
  3. }
  4. $foo = $_COOKIE['foo'];
复制代码
在未设置foo这个cookie的情况下,第5行运行会堕落。原因在于setcookie是设置本次相应的cookie信息,须要浏览器接收到相应并设置后,才能在后续的哀求中附带上该cookie,并没有反应到本次哀求上。
同理,cookie存在于哀求和相应的头部信息中,而头部应该在哀求正文之前,以是setcookie的函数上下文利用限定同header函数,即:在此之前不能已经发送过相应正文。

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作