第15天 cookie与session

COOKIE概述

1、什么是COOKIE?

ü 简单来说,Cookies就是服务器暂时存放在你的电脑里的资料(.txt格式的文本文件),好让服务器用来辨认你的计算机(通常经过加密);
ü Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器。
ü Cookie名称和值可以由服务器端开发者定义,这样服务器可以知道该用户是否是合法用户以及是否需要重新登录等,服务器可以设置或读取Cookies中包含信息,借此维护用户跟服务器会话中的状态。
注意:每种浏览器都可以存储COOKIE数据;各个浏览器之间的COOKIE数据不能共享。

2****、使用COOKIE的好处

ü 用户登录时,记住登录账号和密码,为下一次登录时简化操作;
ü 另一个重要应用场合是“购物车”之类处理。用户可能会在一段时间内在同一家网站的不同页面中选择不同的商品,这些信息都会写入Cookies,以便在最后付款时提取信息。
ü 跟踪统计用户访问网站的习惯。什么时间访问,访问了哪些页面,页面停留时间等,为用户提供个性化服务,为网站营销提供参考。

3****、COOKIE的工作原理

image.png

COOKIE操作

1、添加COOKIE数据

ü 描述:向客户端发送一个 HTTP cookie。
ü 语法:bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )
ü 参数:

$name,cookie的名称;
$value,cookie的值,会自动进行 URL 编码。接收时会进行 URL 解码。**COOKIE值的类型只能是标量数据类型,不可是数组、对象、资源**。
$expire,cookie的有效期;
$path,cookie的服务器路径;
$domain,cookie的域名;
$secure,规定是否通过安全的 HTTPS 连接来传输 cookie。

ü 返回:设置成功返回TRUE,失败返回FALSE。

2、读取COOKIE数据

ü 描述:获取cookie数据是通过超全局数组$_COOKIE来实现的。
ü 语法:value = $_COOKIE[key]

COOKIE设置

1、COOKIE过期有效性设置

(1)即时性COOKIE设置

ü 描述:默认cookie的有效期是关闭浏览器时,自动失效。该cookie称为临时cookie;
ü 语法:bool setcookie ( string $name , string $value [, int $expire = 0 ])
ü 参数:$expire可选,指定cookie保存的时间,默认为0,关闭浏览器失效;

(2)有效性COOKIE设置

ü 语法: bool setcookie ( string $name , string $value [, int $expire = 0 ])
ü 参数:$expire可选,指定cookie保存的时间,默认为0,关闭浏览器失效;
ü 说明:$expire为一个时间戳。一般用time()+N表示新的时间戳。在当前时间点,再加上N秒后,产生一个新的时间戳。
ü 提示:一旦指定了有效的过期时间,cookie失效跟关闭浏览器无关(持久cookie)。

2、COOKIE路径有效性

ü 描述:设置COOKIE只能在指定的目录及其子目录下有效
ü 语法:bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path]]] )
ü 参数:$path默认为"/",代表当前网站根目录,在当前目录及其所有子目录都可以使用。
ü 说明:由于浏览器每次请求时,携带到服务器端很多的COOKIE数据,会导致请求数据变得庞大;将COOKIE划分到各个路径中,减少每个路径下COOKIE的数量。

3、COOKIE域名有效性

ü 描述:给一个COOKIE指定访问的域名
ü 语法:bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain]]]] )
ü 提示:默认情况下,cookie只能在当前域名下有效。
ü 域名划分:

主域名:itcast.cn
一级域名:www.itcast.cn
二级域名:news.itcast.cn
三级域名:php.news.itcast.cn

ü 说明:如果COOKIE域名有效性,设置为主域名,则在所有域名下都可以使用。如果设置为子域名,则只能在子域名下使用该COOKIE。

删除COOKIE数据

1、设置COOKIE有效性为过去的某一个时间

ü 描述:设置有效期为过去的某一个时间
ü 语法:bool setcookie ( string $name [, string $value [, int $expire = 0 ]] )

2、设置COOKIE的值为false或空字符串

3、清理浏览器缓存**

COOKIE的总结

ü COOKIE存储在客户端,相对来说不太安全。
ü COOKIE存储的数据类型,只能是字符串。
ü COOKIE存储的数据容量,大约只能存储4KB数据。
ü 浏览器可以禁用缓存,也可以禁用COOKIE,则COOKIE功能就失效。

SESSION概述

1、什么是SESSION?

ü Session对象存储特定用户的会话数据;
ü Session将会话数据存储在服务器端;
ü Session是基于Cookie技术的,没有Cookie就没有Session;
ü Session在整个用户会话中,一直存在下去;
ü 一个用户会话时效:从用户登录开始,到用户登录结束;
ü Session存储的数据量要比cookie大的多;
ü Session存储的内容类型,不限于字符串;
ü Session数据存储在服务器端,更安全,可靠。

2、SESSION的工作原理

image.png

3、开启SESSION会话功能

ü 描述:启动新会话或者重用现有会话 ;
ü 语法:bool session_start (void )
ü 提示:$_SESSION变量默认是不存在的,与$_POST、$_GET、$_FILES不一样。因此,必须先开启SESSION,才能使用$_SESSION变量;
ü 提示:每个需要SESSION数据的页面,都要开启SESSION功能;
ü 注意:SESSION功能,不能重复开启(同一个页面不能开2次);
ü 返回:成功开始会话返回 TRUE ,反之返回 FALSE;

SESSION操作

1、添加SESSION数据

ü 描述:对Session的管理(增删改查),都是通过超全局数组$_SESSION进行的;
ü 语法:$_SESSION[key] = value
ü 提示:一个网站不管添加多少个SESSION数据,最终在浏览器端只存储一个SESSION的ID值,该ID值是经过加密的,并且永不重复。Key只能是String类型的数据。
ü SESSION文件在服务器端的存储位置:c:\windows\temp

2、读取SESSION数据

ü 语法:$value = $_SESSION[key]
ü 提示:每次SESSION操作,都要先开SESSION功能;

3、删除SESSION数据

ü 使用 unset() 函数,删除一个SESSION数据;

4、销毁SESSION文件

ü 描述:删除当前的SESSION文件,不影响其它的SESSION文件。
ü 语法:bool session_destroy ( void )

SESSION对应COOKIE的配置(php.ini)

1、SESSION对应COOKIE过期时间设置

修改php.ini配置项:session.cookie_lifetime

image.png

2、SESSION对应COOKIE有效路径设置

修改php.ini配置项:session.cookie_path

image.png

3、SESSION对应COOKIE域名有效性设置

修改php.ini配置项:session.cookie_domain

image.png

4、是否仅限https来发送SESSION对应的COOKIE数据

修改php.ini配置项:session.cookie_secure

image.png

5、是否仅限http来使用SESSION对应的COOKIE数据

修改php.ini配置项:session.cookie_httponly

image.png

SESSION垃圾回收机制

1、什么是SESSION的垃圾回收机制?

ü SESSION垃圾回收, 就是将过期的SESSION服务器文件删除的机制;
ü SESSION会自动删除那些过期的服务器端session数据区文件;
ü 修改php的配置文件php.ini

2、垃圾回收的周期:session.gc_maxlifetime

image.png

提示:每24分钟可能会被清理。

3、垃圾回收的概率:session.gc_divisor

回收周期:每24分钟,清理一次SESSION垃圾文件。
回收概率:1/1000,得到一个百分比,如果达到了100%就清理。每1000人访问,才会清理一次。
首先判断时间是否达到24分钟,如果时间达到24分钟,再看访问的人数够不够1000。如果人数够1000,则进行清理,如果人数没有达到1000,则不清理,要等第2个24分钟。

image.png

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 193,968评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,682评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,254评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,074评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,964评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,055评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,484评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,170评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,433评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,512评论 2 308
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,296评论 1 325
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,184评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,545评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,150评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,437评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,630评论 2 335

推荐阅读更多精彩内容