PHP中cookie使用案例详解

阅读量:24
2021-04-18

这次给大家带来PHP中cookie使用案例详解,PHP中cookie使用的注意事项有哪些,下面就是实战案例,一起来看一下。

什么是cookie

cookie,即小饼干,是保存在用户代理端(浏览器是最常见的用户代理)的一些数据片段。浏览网页时,浏览器会将 当前页面有效的 cookie放在请求的头部发送到服务端。

cookie组成

cookie由以下几部分组成:

domain,cookie所属的域名。浏览器发送cookie时,会检查cookie所属的域名,相符才会发送。浏览器会将域下的cookie发送到或者的页面请求中,但不会发送给。同样,的cookie不能发送给,因为限定了域名为dev子域。

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

name, cookie的名称(键名)。

value, cookie的值(内容)。

expires,过期时间。

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

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

cookie的用途

cookie主要用在以下方面:

是无状态的协议,为了维持会话需要额外的数据做标记,cookie是最常用的手段。常见的PHPSESSID和JSESSIONID这两类cookie,分别用在PHP和Java web应用中维持会话。

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

PHP端的cookie操作

读取cookie可以通过$_COOKIE超全局变量读取到用户端传来的所有cookie。$_COOKIE是一个数组,可以遍历读取发送过来的cookie的名称和值。浏览器只发送了cookie的键值到服务端,故而无法读取到cookie的/exipres等信息,因为。

PHP提供了setcookie函数来发送cookie到客户端。setcookie的函数签名是:

bool setcookie ( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool $secure = false [, bool $ = false ]]]]]] )

参数与cookie的组成内容相对应: expires默认为0,表示仅当前会话有效,用户关闭浏览器后该cookie将被清除;path默认为当前页面路径,即网址最后一个反斜杠前的部分;domain默认为当前页面的域名,如果要扩大使用范围,可设置为父级域名或者顶级域名; 默认为false,建议设置为true避免XSS攻击。

删除cookie,只需要设置cookie的expires为过去的时间戳即可,例如 time() – 3600。所以要删除foo这个cookie,代码可以为

setcookie('foo', '', time() - 3600);

cookie的良好实践

从cookie字面意思便可看出,保存的是数据片段。web开发中cookie使用的频率比较高,应该多加以理解。以下是一些使用cookie的良好实践:

不应该在cookie中保存过大和过多的数据;
cookie在客户端和传输中是明文可见的,不应该在cookie中保存敏感信息;
为了站点和用户安全,尽可能将cookie的属性设置为true;
cookie是客户端完全控制的,也属于外部输入,服务端不可盲目相信,应对其进行过滤。
其他

cookie是随请求发送而来,随响应而设置到客户端。理解了这个过程,就可以明白一些新手常见的问题,例如以下代码:

if (!isset($_COOKIE['foo']) {
   setcookie('foo', 'foobar');
 } 
 $foo = $_COOKIE['foo'];

在未设置foo这个cookie的情况下,第5行运行会出错。原因在于setcookie是设置本次响应的cookie信息,需要浏览器接收到响应并设置后,才能在后续的请求中附带上该cookie,并没有反应到本次请求上。

同理,cookie存在于请求和响应的头部信息中,而头部应该在请求正文之前,所以setcookie的函数上下文使用限制同header函数,即:在此之前不能已经发送过响应正文。

相信看了本文案例你已经掌握了方法,更多精彩请关注星网无限其它相关文章!

推荐阅读:

php curl批处理实现可控并发异步操作案例详解

PHP+MySQL实现消息队列步骤详解

以上就是PHP中cookie使用案例详解的详细内容,更多请关注星网无限其它相关文章!

声明:本文原创发布星网无限,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@处理

THE END

发表评论

相关推荐

  • 有关fgets()函数的文章推荐10篇

    以下正文:这篇文章主要介绍了PHP文件读写操作相关函数总结,本文总结了fwrite()、fread()、fgets()、fgetc()、file()、readf ...

    阅读量:65
    2021-04-19
  • php递归与无限分类实例详解

    这篇文章主要介绍了php实现递归与无限分类的方法,涉及php的递归操作技巧,需要的朋友可以参考下本文实例讲述了php实现递归与 ...

    阅读量:45
    2021-04-19
  • CI框架中zip类的使用

    CI框架自带的zip类简单实用,本文就来简单说一下ci框架的zip类的使用,需要的朋友可以参考下CI框架自带的zip类简单实用,本文 ...

    阅读量:44
    2021-04-18
  • SWFUpload插件上传文件的代码

    这篇文章主要介绍了文件上传之SWFUpload插件(代码),实现此代码主要分为两部分:1.前台文件和 2.后台文件upload.php,需要 ...

    阅读量:42
    2021-04-18
  • 关于destoon的URL Rewrite设置方法

    这篇文章主要介绍了destoon的URL Rewrite(伪静态)设置方法,需要的朋友可以参考下1、如果您的服务器支持.htaccess,则无需设 ...

    阅读量:47
    2021-04-18