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 相关文章推荐
杏林同学录(四)
Oct 09 PHP
escape unescape的php下的实现方法
Apr 27 PHP
PHP文件上传原理简单分析
May 29 PHP
php的array_multisort()使用方法介绍
May 16 PHP
PHP获取时间排除周六、周日的两个方法
Jun 30 PHP
Laravel 5框架学习之Laravel入门和新建项目
Apr 07 PHP
thinkPHP实现MemCache分布式缓存功能
Mar 23 PHP
php通过smtp邮件验证登陆的方法
May 11 PHP
利用PHP绘图函数实现简单验证码功能的方法
Oct 18 PHP
php mysql like 实现多关键词搜索的方法
Oct 29 PHP
laravel如何开启跨域功能示例详解
Aug 31 PHP
PHP-X系列教程之内置函数的使用示例
Oct 16 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
为什么夜间收到的中波电台比白天多
2021/03/01 无线电
AJAX for PHP简单表数据查询实例
2007/01/02 PHP
在任意字符集下正常显示网页的方法一
2007/04/01 PHP
一步一步学习PHP(3) php 函数
2010/02/15 PHP
介绍一些PHP判断变量的函数
2012/04/24 PHP
PHP中使用array函数新建一个数组
2015/11/19 PHP
Joomla数据库操作之JFactory::getDBO用法
2016/05/05 PHP
PHP中抽象类和抽象方法概念与用法分析
2016/05/24 PHP
PHP数据对象映射模式实例分析
2019/03/29 PHP
自己编写的类似JS的trim方法
2013/10/09 Javascript
getAsDataURL在Firefox7.0下无法预览本地图片的解决方法
2013/11/15 Javascript
jQuery学习笔记之jQuery.fn.init()的参数分析
2014/06/09 Javascript
jQuery实现自定义右键菜单的树状菜单效果
2015/09/02 Javascript
深入学习 JavaScript中的函数调用
2017/03/23 Javascript
ES6新特性五:Set与Map的数据结构实例分析
2017/04/21 Javascript
Vue异步加载about组件
2017/10/31 Javascript
基于vue-cli vue-router搭建底部导航栏移动前端项目
2018/02/28 Javascript
Vue页面骨架屏的实现方法
2018/05/22 Javascript
微信小程序之侧边栏滑动实现过程解析(附完整源码)
2019/08/23 Javascript
[02:07]DOTA2超级联赛专访BBC:难忘网吧超神经历
2013/06/09 DOTA
python创建列表和向列表添加元素的实现方法
2017/12/25 Python
PyCharm代码回滚,恢复历史版本的解决方法
2018/10/22 Python
pycharm修改界面主题颜色的方法
2019/01/17 Python
django-allauth入门学习和使用详解
2019/07/03 Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
2019/08/06 Python
解决Python在导入文件时的FileNotFoundError问题
2020/04/10 Python
用HTML5制作一个简单的桌球游戏的教程
2015/05/12 HTML / CSS
ASOS英国官网:英国在线时装和化妆品零售商
2017/05/19 全球购物
您的时尚,您的生活方式:DTLR Villa
2019/12/25 全球购物
销售找工作求职信
2013/12/20 职场文书
服装设计师求职信
2014/06/04 职场文书
企业宣传口号
2014/06/12 职场文书
社区班子对照检查材料
2014/08/27 职场文书
公安四风对照检查材料思想汇报
2014/10/11 职场文书
如何把新闻人物写得立体、鲜活?
2019/08/14 职场文书
MySQL单表千万级数据处理的思路分享
2021/06/05 MySQL