zoukankan      html  css  js  c++  java
  • cookie,session原理,以及如何使用chrome查看。

    首先,先补充下chrome浏览器的使用。

    1.1、php源码:

    <?php
    
    $cookieDomain = '.elf.com';
    
    setcookie('elf', 'im elf cookie', time()+300, '/', $cookieDomain);
    
    setcookie('aaa', 'aaaa', time()+10);

    1.2、chrome效果

    解释:头文件中request headers表示浏览器向服务器发送的包头,告诉服务器我这边的信息,顺带带上我所有的cookie(无论你是否请求cookie,只要是本域名下和本域名的主域名下的cookie都返回)。

    response headers表示服务器返回给浏览器的包头,其中set-cookie表示服务器说“喂,浏览器,给我写入这些cookie到你本地去”。

    同理下图可以查看cookie。

    注意上面两张图,没有PHPSESSID这个cookie哟。。。

    1、3,修改服务器代码如下:

    session_start();
    
    echo 'cookie';
    var_dump($_COOKIE);

    1、4,第一次刷新浏览器

    1,5、第二次刷新浏览器

    两次刷新略有不同,

    第一次刷新:

    客户端没有任何cookie给服务器,

    服务器运行代码session_start后,会自动生成一个session id,存放在cookie里,该cookie的key默认是PHPSESSID,value就是session id。所以服务器告诉客户端,“喂,给我set一个cookie,key是。。。value是。。。”

    第二次刷新:

    客户端把上一步生成的cookie带给服务器,也就是PHPSESSID=sjb2vafon1qi710hav8r8j5jl6这个鬼。

    服务器虽然有session_start代码,但是已经生成了一个了,所以没有关于cookie的操作。

    关于session id的生成,上面已经说了,session_start时自动生成,每个服务器对应每个浏览器的域名(bbs.a.com和login.a.com是不同域名)生成唯一一个,当浏览器关闭时,该session id失效,运行session_start会重新生成一个不同的session id存放在本地key为PHPSESSID的cookie里面。

    关于session的数据,是存放在该web服务器里面的(默认/tmp目录),使用$_SESSION命令取session数据时,服务器会自动根据session id去找对应的session数据。

    cookie和session的一个小区别,

    如果服务器代码为setcookie('xxx','xxx',time); $_COOKIE['xxx'];

    第一次运行该代码是取不到cookie的,因为第一次时,客户端的包头没有任何cookie传递给服务器,所以$_COOKIE为空,然后服务器返回给客户端的数据有setcookie,这个时候客户端才开始写入cookie到本地。

    第二次运行,客户端包头就会把本地的所有cookie传递给服务器(包含主域名下的cookie)

    同理,

    换做session就不会有这个问题,比如服务器代码为session_start();$_SESSION['xxx'] = ‘xxx’; echo $_SESSION['xxx'];

    第一次运行时,服务器是能取到key为xxx的session的。因为session_start时,服务器就生成了一个session id,并且在服务器开辟了一个空间存放该session id对应的data,所以$_SESSION['xxx'] = ‘xxx’这一步的数据此时已经写入到服务器了,

    再echo $_SESSION['xxx'];时,是成功的。

  • 相关阅读:
    第17章 委托
    第16章 数组
    第15章 枚举类型和位标志
    第14章 字符、字符串和文本处理
    第13章 接口
    第12章 泛型
    第10章 属性
    第11章 事件
    内部类(转载)
    Collections.sort的三种用法
  • 原文地址:https://www.cnblogs.com/alazalazalaz/p/5711157.html
Copyright © 2011-2022 走看看