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 相关文章推荐
15种PHP Encoder的比较
Apr 17 PHP
php生成SessionID和图片校验码的思路和实现代码
Mar 10 PHP
php编写一个简单的路由类
Apr 13 PHP
php模板函数 正则实现代码
Oct 15 PHP
php页面跳转代码 输入网址跳转到你定义的页面
Mar 28 PHP
如何使用php输出时间格式
Aug 31 PHP
PHP中session变量的销毁
Feb 27 PHP
递归实现php数组转xml的代码分享
May 14 PHP
php实现的简单美国商品税计算函数
Jul 13 PHP
浅析Laravel5中队列的配置及使用
Aug 04 PHP
php版微信自动获取收货地址api用法示例
Sep 22 PHP
PHP删除数组中指定值的元素常用方法实例分析【4种方法】
Aug 21 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
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
2006/12/06 PHP
php 输出双引号&quot;与单引号'的方法
2010/05/09 PHP
Windows下利用Gvim写PHP产生中文乱码问题解决方法
2011/04/20 PHP
基于PHP的cURL快速入门教程 (小偷采集程序)
2011/06/02 PHP
如何用javascript去掉字符串里的所有空格
2007/02/08 Javascript
jQeury淡入淡出需要注意的问题
2010/09/08 Javascript
jQuery中position()方法用法实例
2015/01/16 Javascript
javascript随机显示背景图片的方法
2015/06/18 Javascript
js使用cookie记录用户名的方法
2015/11/26 Javascript
jquery注册文本框获取焦点清空,失去焦点赋值的简单实例
2016/09/08 Javascript
vue子父组件通信的实现代码
2017/07/09 Javascript
详解Angular2学习笔记之Html属性绑定
2018/01/03 Javascript
详解小程序rich-text对富文本支持方案
2018/11/28 Javascript
JQuery实现ajax请求的示例和注意事项
2018/12/10 jQuery
JavaScript惰性求值的一种实现方法示例
2019/01/11 Javascript
不刷新网页就能链接新的js文件方法总结
2020/03/01 Javascript
node运行js获得输出的三种方式示例详解
2020/07/02 Javascript
js实现数字跳动到指定数字
2020/08/25 Javascript
[03:40]DOTA2亚洲邀请赛小组赛第二日 赛事回顾
2015/01/31 DOTA
[06:07]DOTA2-DPC中国联赛 正赛 Ehome vs VG 选手采访
2021/03/11 DOTA
Python中使用Beautiful Soup库的超详细教程
2015/04/30 Python
python+selenium打印当前页面的titl和url方法
2018/06/22 Python
python UDP(udp)协议发送和接收的实例
2019/07/22 Python
python判断自身是否正在运行的方法
2019/08/08 Python
win10下安装Anaconda的教程(python环境+jupyter_notebook)
2019/10/23 Python
Python检测端口IP字符串是否合法
2020/06/05 Python
python实现视频压缩功能
2020/12/18 Python
“型”走纽约上东区:Sam Edelman
2017/04/02 全球购物
全球性的在线商店:Vogca
2019/05/10 全球购物
计算机应用专业毕业生求职信
2013/10/24 职场文书
银行演讲稿范文
2014/01/03 职场文书
工作疏忽、懈怠的检讨书
2014/09/11 职场文书
2014年大学生职业规划书:未来不是梦,只要勇敢冲!
2014/09/22 职场文书
领导班子个人对照检查剖析材料
2014/09/29 职场文书
公务员年度考核评语
2014/12/31 职场文书
Python趣味挑战之用pygame实现简单的金币旋转效果
2021/05/31 Python