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后台程序与Javascript的两种交互方式
Oct 25 PHP
php 需要掌握的东西 不做浮躁的人
Dec 28 PHP
一个简单php扩展介绍与开发教程
Aug 19 PHP
php设计模式 Prototype (原型模式)代码
Jun 26 PHP
PHP flock 文件锁详细介绍
Dec 29 PHP
基于php下载文件的详解
Jun 02 PHP
PHP Global变量定义当前页面的全局变量实现探讨
Jun 05 PHP
通过table标签,PHP输出EXCEL的实现方法
Jul 24 PHP
php使用类继承解决代码重复的问题
Feb 11 PHP
windows8.1下Apache+Php+MySQL配置步骤
Oct 30 PHP
WordPress分页伪静态加html后缀
Jun 08 PHP
php监测数据是否成功插入到Mysql数据库的方法
Nov 25 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
php intval的测试代码发现问题
2008/07/27 PHP
PHP使用正则表达式获取微博中的话题和对象名
2015/07/18 PHP
php计算税后工资的方法
2015/07/28 PHP
PHP中filter函数校验数据的方法详解
2015/07/31 PHP
Yii针对添加行的增删改查操作示例
2016/10/18 PHP
PHP解耦的三重境界(浅谈服务容器)
2017/03/13 PHP
php函数式编程简单示例
2019/08/08 PHP
解决Laravel5.2 Auth认证退出失效的问题
2019/10/14 PHP
Jquery Validation插件防止重复提交表单的解决方法
2010/03/05 Javascript
12个非常有创意的JavaScript小游戏
2010/03/18 Javascript
js使浏览器窗口最大化实现代码(适用于IE)
2013/08/07 Javascript
分享两段简单的JS代码防止SQL注入
2016/04/12 Javascript
Angular的MVC和作用域
2016/12/26 Javascript
使用Nodejs连接mongodb数据库的实现代码
2017/08/21 NodeJs
JavaScript数据结构与算法之检索算法示例【二分查找法、计算重复次数】
2019/02/22 Javascript
原生JS生成指定位数的验证码
2020/10/28 Javascript
JavaScript基于SVG的图片切换效果实例代码
2020/12/15 Javascript
[06:07]辉夜杯现场观众互动 “比谁远送显示器”
2015/12/26 DOTA
python检测远程udp端口是否打开的方法
2015/03/14 Python
使用Python的内建模块collections的教程
2015/04/28 Python
python实现多线程的方式及多条命令并发执行
2016/06/07 Python
Python利用matplotlib生成图片背景及图例透明的效果
2017/04/27 Python
Django 解决distinct无法去除重复数据的问题
2020/05/20 Python
推荐值得学习的12款python-web开发框架
2020/08/10 Python
matplotlib常见函数之plt.rcParams、matshow的使用(坐标轴设置)
2021/01/05 Python
CSS3效果:自定义“W”形运行轨迹实例
2017/03/29 HTML / CSS
Sixt美国租车:高端豪华车型自驾体验
2017/09/02 全球购物
Happy Socks英国官网:购买五颜六色的袜子
2020/11/03 全球购物
中学老师的自我评价
2013/11/07 职场文书
求职者怎样写自荐信
2014/04/13 职场文书
护士演讲稿优秀范文
2014/04/30 职场文书
高中毕业典礼演讲稿
2014/09/09 职场文书
学校师德师风自我剖析材料
2014/09/29 职场文书
常务副县长“四风”个人对照检查材料思想汇报
2014/10/02 职场文书
2015年清明节网上祭英烈活动总结
2015/03/26 职场文书
SpringBoot项目多数据源及mybatis 驼峰失效的问题解决方法
2022/07/07 Java/Android