php第一次无法获取cookie问题处理


Posted in PHP onDecember 15, 2014

首先编写以下简单的代码:

<?php 

    setcookie('a','value');

    print $_COOKIE['a'];

第一次访问时,报错:php第一次无法获取cookie问题处理

报错的原因是$_COOKIE['a']的值不存在。第二次访问:

php第一次无法获取cookie问题处理

问:为什么第一次访问的时候,会没有cookie呢??我不是先设置,再获取吗??

答:使用firefox的firebug查看”网络“:

php第一次无法获取cookie问题处理

客户端:

可以看到,浏览器(客户端)向服务器发出一次请求,发出请求的时候,在请求头信息中带上了各种参数,告诉服务器,我要接收什么样的文本(Accept)、什么编码格式(Accept-Encoding)、什么语言(Accept-Language)等等,当然,还把Cookie也传到了服务器(Cookie)。

服务器端:

第一步:setcookie('a','value')

因为cookie是设置在客户端的,setcookie函数自己并不能设置cookie,它只能通过头信息的方式告诉浏览器说:兄弟,我要设置一个cookie,键为a,值为value,你在你那里帮我设置一下。你也可以理解为:”来,朕今天高兴,赏你一个小甜饼“。

第二步:$_COOKIE['a']$_COOKIE['a']

很简单,执行的操作就是在浏览器带过来的cookie字符串中搜索键为a的cookie,并返回它的值。

php第一次无法获取cookie问题处理

很明显,这个”键为a“的cookie不可能找到,因为客户端访问服务器的时候,这个cookie压根就不存在,而前面第一步设置cookie的头信息,也还没有返回给客户端(php要从上到下把语句执行完才会返回给客户端)

第三步:服务器返回信息

其中,返回的头信息中带有”Set-Cookie a=value“,浏览器收到这个头信息,把cookie存放到电脑的某个文件中,对于不同浏览器cookie的存放位置貌似不同,这个不在本文的范围。

php第一次无法获取cookie问题处理

刷新浏览器,再次访问服务器的时候,同样,也会把很多头信息带给服务器,只不过这次带过去的cookie中,就多了一个a=value了。所心$_COOKIE['a']自然就能从cookie字符串中找到这个键为a的cookie的值。

php第一次无法获取cookie问题处理

PHP 相关文章推荐
Zend framework处理一个http请求的流程分析
Feb 08 PHP
php中用于检测一个地理IP地址是否可用的代码
Feb 19 PHP
apache和php之间协同工作的配置经验分享
Apr 08 PHP
解析php框架codeigniter中如何使用框架的session
Jun 24 PHP
解析php做推送服务端实现ios消息推送
Jul 01 PHP
shell脚本作为保证PHP脚本不挂掉的守护进程实例分享
Jul 15 PHP
ThinkPHP实现一键清除缓存方法
Jun 26 PHP
php简单解析mysqli查询结果的方法(2种方法)
Jun 29 PHP
php封装的图片(缩略图)处理类完整实例
Oct 19 PHP
php curl 模拟登录并获取数据实例详解
Dec 22 PHP
老生常谈PHP面向对象之注册表模式
May 26 PHP
PHP完全二叉树定义与实现方法示例
Oct 09 PHP
php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
Dec 15 #PHP
php实现按指定大小等比缩放生成上传图片缩略图的方法
Dec 15 #PHP
php实现可用于mysql,mssql,pg数据库操作类
Dec 13 #PHP
PHP中Memcache操作类及用法实例
Dec 12 #PHP
PHP实现PDO的mysql数据库操作类
Dec 12 #PHP
PHP实现的sqlite数据库连接类
Dec 12 #PHP
php+mysql数据库实现无限分类的方法
Dec 12 #PHP
You might like
投票管理程序
2006/10/09 PHP
php横向重复区域显示二法
2008/09/25 PHP
php设计模式 Command(命令模式)
2011/06/26 PHP
如何使用php判断服务器是否是HTTPS连接
2013/07/05 PHP
PHP和JavaScrip分别获取关联数组的键值示例代码
2013/09/16 PHP
PHP 中魔术常量的实例详解
2017/10/26 PHP
Laravel框架实现的批量删除功能示例
2019/01/16 PHP
CSS+Table图文混排中实现文本自适应图片宽度(超简单+跨所有浏览器)
2009/02/14 Javascript
Flexigrid在IE下不显示数据的有效处理方法
2014/09/04 Javascript
微信小程序 自己制作小组件实例详解
2016/12/22 Javascript
JavaScript运动框架 解决防抖动问题、悬浮对联(二)
2017/05/17 Javascript
vue bus全局事件中心简单Demo详解
2018/02/26 Javascript
使用Angular CLI快速创建Angular项目的一些基本概念和写法小结
2018/04/22 Javascript
jQuery实现导航样式布局操作示例【可自定义样式布局】
2018/07/24 jQuery
JavaScript常见鼠标事件与用法分析
2019/01/03 Javascript
jQuery控制input只能输入数字和两位小数的方法
2019/05/16 jQuery
如何在vue中使用video.js播放m3u8格式的视频
2021/02/01 Vue.js
[04:19]DOTA2亚洲邀请赛 现场花絮
2015/03/11 DOTA
Python编程中运用闭包时所需要注意的一些地方
2015/05/02 Python
Python实现翻转数组功能示例
2018/01/12 Python
python中ImageTk.PhotoImage()不显示图片却不报错问题解决
2018/12/06 Python
python制作填词游戏步骤详解
2019/05/05 Python
Django框架设置cookies与获取cookies操作详解
2019/05/27 Python
python实现的汉诺塔算法示例
2019/10/23 Python
python+opencv边缘提取与各函数参数解析
2020/03/09 Python
CSS3中的clip-path使用攻略
2015/08/03 HTML / CSS
夏洛特和乔治婴儿和儿童时装精品店:Charlotte and George
2018/06/06 全球购物
Levi’s西班牙官方网站:李维斯,著名的牛仔裤品牌
2020/08/20 全球购物
个人评价范文分享
2014/01/11 职场文书
毕业典礼主持词大全
2014/03/26 职场文书
协会周年庆活动方案
2014/08/26 职场文书
六查六看自检自查剖析材料
2014/10/14 职场文书
党的群众路线教育实践活动批评与自我批评范文
2014/10/16 职场文书
先进个人主要事迹范文
2015/11/04 职场文书
漫画「你在春天醒来」第10卷封面公开
2022/03/21 日漫
《最终幻想14》6.01版本4月5日推出 追加新任务新道具
2022/04/03 其他游戏