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 相关文章推荐
PHP采集相关教程之一 CURL函数库
Feb 15 PHP
thinkPHP的Html模板标签使用方法
Nov 13 PHP
PHP实现的MongoDB数据库操作类分享
May 12 PHP
PHP file_get_contents函数读取远程数据超时的解决方法
May 13 PHP
自定义min版smarty模板引擎MinSmarty.class.php文件及用法
May 20 PHP
PHPExcel简单读取excel文件示例
May 26 PHP
PHP 获取客户端 IP 地址的方法实例代码
Nov 11 PHP
Laravel框架基于ajax和layer.js实现无刷新删除功能示例
Jan 17 PHP
PDO::query讲解
Jan 29 PHP
PHP设计模式之简单工厂和工厂模式实例分析
Mar 25 PHP
PHP反射原理与用法深入分析
Sep 28 PHP
PHP实现chrome表单请求数据转换为接口使用的json数据
Mar 04 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
《斗罗大陆》六翼天使武魂最强,为什么老千家不是上三宗?
2020/03/02 国漫
PHP 数组入门教程小结
2009/05/20 PHP
解析phpstorm + xdebug 远程断点调试
2013/06/20 PHP
Win2003+apache+PHP+SqlServer2008 配置生产环境
2014/07/29 PHP
php实现图片局部打马赛克的方法
2015/02/11 PHP
php简单的上传类分享
2016/05/15 PHP
PHP检查网站是否宕机的方法示例
2017/07/24 PHP
利用JQuery的load函数动态加载其它页面的内容的实现代码
2010/12/14 Javascript
jquery使用正则表达式验证email地址的方法
2015/01/22 Javascript
JS实现图片产生波纹一样flash效果的方法
2015/02/27 Javascript
JS 作用域与作用域链详解
2015/04/07 Javascript
配置Grunt的Task时通配符支持和动态生成文件名问题
2015/09/06 Javascript
跟我学习javascript的循环
2015/11/18 Javascript
angular2使用简单介绍
2016/03/01 Javascript
js从外部获取图片的实现方法
2016/08/05 Javascript
vue使用drag与drop实现拖拽的示例代码
2017/09/07 Javascript
详解JS构造函数中this和return
2017/09/16 Javascript
加载 vue 远程代码的组件实例详解
2017/11/20 Javascript
Angular2使用vscode断点调试ts文件的方法
2017/12/13 Javascript
Vue实现6位数密码效果
2018/08/18 Javascript
默认浏览器设置及vue自动打开页面的方法
2018/09/21 Javascript
jQuery 动画与停止动画效果实例详解
2020/05/19 jQuery
koa中间件核心(koa-compose)源码解读分析
2020/06/15 Javascript
[45:15]Optic vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
Python实现遍历目录的方法【测试可用】
2017/03/22 Python
python 读取文本文件的行数据,文件.splitlines()的方法
2018/07/12 Python
python如何解析配置文件并应用到项目中
2019/06/27 Python
python函数enumerate,operator和Counter使用技巧实例小结
2020/02/22 Python
python异常处理、自定义异常、断言原理与用法分析
2020/03/23 Python
Python3.7将普通图片(png)转换为SVG图片格式(网站logo图标)动起来
2020/04/21 Python
在python image 中实现安装中文字体
2020/05/16 Python
使用Django搭建网站实现商品分页功能
2020/05/22 Python
台湾租车首选品牌:IWS艾维士租车
2019/05/03 全球购物
家长对学生的评语
2014/04/18 职场文书
莫言诺贝尔获奖演讲稿
2014/05/21 职场文书
tensorflow中的梯度求解及梯度裁剪操作
2021/05/26 Python