首页 > 代码库 > php是通过什么获取cookie的

php是通过什么获取cookie的

https://segmentfault.com/q/1010000004152987?_ea=550732

$_COOKIE变量是通过读取cookie文件来取得cookie的值吗?

  • php
  • cookie
sunshineuuc 2015年12月16日提问
 
  • 5 关注
  • 0 收藏,899 浏览
 
0
 

$_COOKIE变量是通过读取cookie文件来取得cookie的值吗?将cookie文件删除后为什么$_COOKIE变量的值还存在呢?

  • 2015年12月16日提问
  • 编辑
  • 评论
  • 邀请回答
技术分享
技术分享
 

5个回答

 
4

cookie的产生流程是这样的:服务端设置cookie后,返回给浏览器端,浏览器会将cookie保存在客户端本地,浏览器每次向服务端的http请求,都会带上这个cookie,若客户端删除cookie,则发送给服务端的请求中的cookie就是空的,可以观察下浏览器控制台的requuest_header 中的Cookie 字段

  • 1月8日回答
  • 编辑
  • 评论
技术分享
hi393 声望
 
0
session_start();var_dump($_COOKIE);

上面两行代码就开启了会话了。打开chrome开发者模式

技术分享

那么我试着把cookie干掉

技术分享

新的会话。一个sessionID 可以认为是一个会话 会话之间是没啥关系的

还有 $_COOKIE 这个是系统变量。可百度PHP系统变量。好几个,每个变量是存什么的,有什么分工和职责,这个可以去探究下。

  • 1月8日回答 · 1月8日更新
  • 编辑
  • 评论
 
Lowky2.8k 声望
 
0

是用户request的header头中的,每次请求都会带上的,

  • 1月8日回答
  • 编辑
  • 评论
技术分享
吉他谱点我网77 声望
 
0

严格来说不是通过读取文件。

浏览器发送请求的时候会把cookie包含在请求头里:

技术分享

然后服务器端解析这个Cookie头,并存到$_COOKIE变量里。

不过不知道你所谓的删除cookie文件具体是怎么操作的。因为cookie文件被删除了,相当于cookie被清空了,这时候理论上浏览器立刻发送请求时,$_COOKIE应该为空。

  • 1月8日回答
  • 编辑
  • 评论
技术分享
icyfire813 声望
 
0

前端可以设置cookie值,发送http请求时,将带上cookie值发送给服务器端
服务端通过读取http请求的头信息,进行记录或进行数据验证,或设置新的cookie
客户端拿到HTTP请求的回复后,会把cookie值通过set-cookie带回
浏览器再把cookie保存到本地cookie文件中~~~

删除本地的cookie文件,并不意味着发送请求的时候没有cookie信息,取决于前端是否针对本次请求是否设置了cookie如果设置过了,请求的时候还是会带上发送给服务器,服务器还是能收到~~~

  • 1月8日回答
  • 编辑
  • 评论
技术分享
kikong15.8k 声望
 

撰写答案

php是通过什么获取cookie的