欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

cookie会话技术

程序员文章站 2022-06-11 22:33:50
...

cookie

理解:

  1. 允许 服务器端程序(PHP) 在 浏览器上存储数据 的一种技术
  2. 由服务器脚本(PHP)决定存储内容
  3. 该数据存储好之后,典型的特征:在浏览器向该服务器发出请求时,会携带该服务器所存储的数据。

公式:

设置cookie值:Setcookie(键,值,有效期=0,有效路径=‘’,有效域名=‘’,是否仅安全连接传输=false,是否HTTPonly=false)
获取cookie值:$_COOKIE

有效期:
  • 浏览器关闭(会话周期结束)时,COOKIE失效。也成之为:会话COOKIE(临时COOKIE)
  • 允许设置COOKIE的有效期,语法上,使用setcookie的第三个参数进行设置,通过unix时间戳(从1970年到现在的秒数,PHP函数time()来获取当前时间戳。)来设置COOKIE的有效期。
  • 特殊值:
特殊值 含义
0 默认值,表示临时COOKIE。
PHP_INT_MAX PHP所能表示的最大整型(时间戳也是个整型,也是PHP能表示的最大时间戳)。
Time()-1 删除COOKIE通用做法,强制设为过期(PHP的setcookie也支持将第二个参数设置为空字符串的方式,表示删除。)
有效路径:
  • 默认值:在当前目录及其后代目录有效。(语法使用空字符串表示默认值,通用!)
  • 设置值:通常如果需要设置,就是将COOKIE设置为 / 根目录下有效,表示整站有效。
有效域名:
  • 默认值:某个域名下设置的COOKIE,仅仅可以在当前域名下所使用!。
  • 设置值:现在稍大点的网站,都会使用子域名(二级域名)的方式划分业务逻辑,例如:(二级域名)News.baidu.com. music.baidu.com, 就是(*域名)baidu.com下的子域名
    COOKIE,支持在一级域名内(所有的二级域名之间)进行COOKIE数据共享,如下:
Setcookie('name','value','','','.baidu.com')//所有的子域名都能获取到该cookie数据
是否仅安全连接(https)传输:
  • 默认值:false,表示都可以(http和https)。
  • 设置值:true,我们所设置的cookie,仅仅在https这个协议下,才会被发送到浏览器端!。
是否仅安全连接(http)传输:
  • 默认值:false,表示都可以(http和https)。
  • 设置值:true,我们所设置的cookie,仅仅在http这个协议下,才会被发送到浏览器端!。

注意:如果要如果需要禁止,浏览器端其他脚本使用该cookie(例如:js的documen.cookie),那么就将值设置成true

注意点:

  1. COOKIE仅仅支持字符串类型数据
    1.1 可以转换成字符串的数据会执行自动类型转换。
    1.2 Serialize()序列化。将某种特殊数据类型的原数据,转换成字符串。获取后,再反序列化unserialize()获取原数据。

  2. $_COOKIE,仅仅用来存储浏览器请求时携带的COOKIE数据

拓展:

公式:
    string serialize ( mixed $value )
作用:
  1. serialize — 产生一个可存储的值的表示 ,返回字符串,此字符串包含了表示 value 的字节流,可以存储于任何地方。
  2. 存储或传递 PHP 的值,同时不丢失其类型和结构。
  3. serialize() 可处理除了 resource 之外的任何类型。甚至可以 serialize() 那些包含了指向其自身引用的数组。你正 serialize() 的数组/对象中的引用也将被存储。
  4. 当序列化对象时,PHP 将试图在序列动作之前调用该对象的成员函数 __sleep(),这样就允许对象在被序列化之前做任何清除操作。
公式:
mixed unserialize ( string $str )
/*
参数:
    str:序列化后的字符串。
作用:
  1. 对单一的已序列化的变量进行操作,将其转换回 PHP 的值。
  2. 若被解序列化的变量是一个对象,在成功地重新构造对象之后,PHP 会自动地试图去调用 __wakeup() 成员函数(如果存在的话)。