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

1.1、php源码:

<?php

$cookieDomain = '.elf.com';

setcookie('elf', 'im elf cookie', time()+, '/', $cookieDomain);

setcookie('aaa', 'aaaa', time()+);

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'];时,是成功的。

最新文章

  1. Cesium原理篇:Property
  2. (十五)ioctl、ifreq、ifconf
  3. Begin :SWIFT 基本语法
  4. JQuery调用Servlet实现文件下载
  5. Ubuntu下matlab快捷键设置
  6. 新浪微博客户端(9)-实现版本新特性的ViewPager
  7. Error Domain=com.alamofire.error.serialization.response Code=-1016 &quot;Request failed: unacceptable con
  8. 使用自定义材质球,实现NGUI屏幕溶解和灰显
  9. Inno Setup入门(十一)——完成安装后执行某些程序
  10. Nginx配置文件变量大全
  11. php透明合并png与jpg图片
  12. 17_JSP_入门
  13. poj 3422 (费用流)
  14. stm32内部的CAN总线
  15. LPC2478的外部中断使用
  16. 谈谈final, finally, finalize的区别
  17. python模块part1
  18. MicroPython的开发板
  19. android 去掉activity的切换动画
  20. Clion 常用快捷键

热门文章

  1. 加载AssetBundle方法
  2. JavaEE知识点总结
  3. 一、prolog简介
  4. python学习文章
  5. UVALive - 4513 Stammering Aliens ——(hash+二分 || 后缀数组加二分)
  6. C语言中的回调函数(Callback Function)
  7. java工程笔记
  8. ubuntu 搭建PPTP VPN服务器
  9. div显示提示信息
  10. Unity协程截图,WWWForm、WWW配合上传