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
PHP实现MySQL更新记录的代码
Jun 07 PHP
php 信息采集程序代码
Mar 17 PHP
让php处理图片变得简单 基于gb库的图片处理类附实例代码下载
May 17 PHP
关于shopex同步ucenter的redirect问题,导致script不运行
Apr 10 PHP
PHP SPL使用方法和他的威力
Nov 12 PHP
php查询mssql出现乱码的解决方法
Dec 29 PHP
Laravel 5.1 on SAE环境开发教程【附项目demo源码】
Oct 09 PHP
PHP实现的登录页面信息提示功能示例
Jul 24 PHP
php处理抢购类功能的高并发请求
Feb 08 PHP
PHP大文件切割上传功能实例分析
Jul 01 PHP
使用swoole 定时器变更超时未支付订单状态的解决方案
Jul 24 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中使用数组实现堆栈数据结构的代码
2012/02/05 PHP
html静态页面调用php文件的方法
2014/11/13 PHP
PHP的Yii框架中View视图的使用进阶
2016/03/29 PHP
PHP读取mssql json数据中文乱码的解决办法
2016/04/11 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
javascript下查找父节点的简单方法
2007/08/13 Javascript
JavaScript实现x秒后自动跳转到一个页面
2013/01/03 Javascript
javascript搜索框效果实现方法
2015/05/14 Javascript
javascript实现动态导入js与css等静态资源文件的方法
2015/07/25 Javascript
js立即执行函数: (function ( ){})( ) 与 (function ( ){}( )) 有什么区别?
2015/11/18 Javascript
详解JavaScript 中的 replace 方法
2016/01/01 Javascript
JS实现把鼠标放到链接上出现滚动文字的方法
2016/04/06 Javascript
深入解析Vue 组件命名那些事
2017/07/18 Javascript
在vue-cli中组件通信的方法
2017/12/16 Javascript
vue使用element-ui的el-input监听不了回车事件的解决方法
2018/01/12 Javascript
基于Axios 常用的请求方法别名(详解)
2018/03/13 Javascript
详解JQuery基础动画操作
2019/04/12 jQuery
彻底揭秘keep-alive原理(小结)
2019/05/05 Javascript
BootStrap表单验证中的非Submit类型按钮点击时触发验证的坑
2019/09/05 Javascript
在node环境下parse Smarty模板的使用示例代码
2019/11/15 Javascript
[04:21]狐狸妈带你到现场 DOTA2 TI中国区预选赛线下赛路线指引
2014/05/22 DOTA
Python实现定时备份mysql数据库并把备份数据库邮件发送
2018/03/08 Python
python 读入多行数据的实例
2018/04/19 Python
Python装饰器的执行过程实例分析
2018/06/04 Python
Python实现12306火车票抢票系统
2019/07/04 Python
Python中字典与恒等运算符的用法分析
2019/08/22 Python
python输出带颜色字体实例方法
2019/09/01 Python
Django 后台带有字典的列表数据与页面js交互实例
2020/04/03 Python
美国最大的城市服装和运动鞋零售商:Jimmy Jazz
2016/11/19 全球购物
比较一下entity bean和session bean
2013/12/27 面试题
高中生的学习总结自我鉴定
2013/10/26 职场文书
销售冠军获奖感言
2014/02/03 职场文书
《最后的姿势》教学反思
2014/02/27 职场文书
2014党员学习兰辉先进事迹思想汇报
2014/09/17 职场文书
2015仓库保管员年终工作总结
2015/05/13 职场文书
《这片土地是神圣的》教学反思
2016/02/16 职场文书