会话之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的增删改查

posted @ 2017-03-18 15:24  听听Ting  阅读(186)  评论(0编辑  收藏  举报