会话之cookie介绍
一、什么是会话
打开浏览器,访问某个网站的多个页面(通过点击超链接),然后关闭浏览器,整个过程称之为一个会话
二、会话过程中要解决的一些问题
每个用户在使用浏览器与服务器进行会话的过程中,各自会产生一些数据,服务器要想办法为每个用户保存这些数据。
场景:1、购物车,每个用户查看购物车的时候,看到的是自己的选择,怎么实现?
2、为什么视频网站可以保存游客上一次看过的电影?
3、当再次登录某个网站时,会提示上一次登录时间地点,如何实现?
4、访问某个购物网站的时候,提示你曾经浏览过的商品,如何实现?
5、登录某个网站时,可以选择保存登录信息多久,不用重复输入登录信息,如何实现?
三、cookie
- cookie的初步介绍
1、什么是cookie
服务器在客户端保存用户信息,比如登录名,密码等....就是cookie。这些信息数据量非常小,服务器端在需要的时候可以从客户端读取,保存在客户端的浏览器缓存目录下,可通过下图理解。右图为登录信息cookie
2、cookie可以用来做什么?
1)保存上次登录时间等信息
2)保存用户名、密码,在一定时间内不用重新登录
3)记录用户访问网站的喜好
4)网站的个性化,比如定制网站首页的个性化显示
3、cookie的基本使用
1)如何创建cookie
小贴士:cookie保存以明文保存,重要信息不能保存在cookie中
1 <?php> 2 //演示如何创建cookie信息 3 //这个函数用于保存cookie 4 //第一个参数表示cookie一个key,第二个参数表示val,第三个参数表示cookie值在客户端保存的时间,按秒计算 5 //key1<---->value1 6 //key2<---->value2 7 setCookie("name","Jone",time()+3600); 8 setCookie("password","123456",time()+3600); 9 setCookie("address","北京",time()+3600); 10 setCookie("hobby","旅游",time()+300); 11 echo "保存成功"; 12 <?>
说明:
①当浏览器访问该页面时,服务器会返回响应,当浏览器获取到该信息后,就会保存该cookie的信息到本机磁盘文件中,通过抓包可在response头信息中能看到。返回形式如下图:
②如果没有时间参数(第三个参数)
cookie不会保存到客户端,当浏览器的会话结束,cookie也就失效
③cookie能保存字符串信息
④客户端可以保存多个key<---->value对
⑤cookie也可以保存中文,默认将对中文进行urlencode编码
⑥cookie可以有多个键值对,可以给不同的键<---->值指定不同的有效时间
2)如何从客户端获取保存的cookie信息
1 <?php> 2 //获取cookie信息 3 echo "<pre>"; 4 print_r($_COOKIE); 5 echo "</pre>"; 6 //获取指定的key对应的值 7 if(!empty($_COOKIE['name'])){ 8 echo "name=".$name; 9 }else{ 10 echo "cookie失效了"; 11 } 12 <?>
说明:
①如果cookie有效时间到,则不能取出
②客户端cookie信息是怎样传递给服务器的?
通过http协议的头信息来传递,这个机制是http协议规定的,通过抓包可在response的头信息中看到
Cookie: name=Jone;password=123456;address=%E5%8C%97%E4%BA%AC;hobby=%E6%97%85%E6%B8%B8
3)如何更新cookie信息
更新某个cookie key<--->value 实际上是重新设置
1 <?php> 2 //更新 3 setCookie("address","Paris",time()+3600); 4 echo "把 键address的值更新了"; 5 <?>
4)删除cookie信息
①指定删除某个key<---->value对
1 <?php> 2 //指定删除某个键值对 3 //如果要删除某个key,只需要把time()-秒数 4 setCookie("name","",time()-100); 5 echo "name键删除成功"; 6 <?>
②删除所有key<---->value对
1 <?php> 2 //如何删除所有的cookie 3 foreach($_COOKIE as $key=>$val){ 4 setCookie($key,"",time()-100); 5 } 6 echo "删除cookie成功"; 7 <?>
小贴士:如果删除的键值对没有删除完,则这个cookie文件在客户端保留,如果将这个网站的所有cookie都删除,则浏览器会把cookie文件删除
学习导向:cookie的增删改查