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 异常处理实现代码
Mar 10 PHP
php 更新数据库中断的解决方法
Jun 05 PHP
基于php下载文件的详解
Jun 02 PHP
php实现邮件发送并带有附件
Jan 24 PHP
排序算法之PHP版快速排序、冒泡排序
Apr 09 PHP
Codeigniter中禁止A Database Error Occurred错误提示的方法
Jun 12 PHP
php字符串替换函数substr_replace()用法实例
Mar 17 PHP
DEDE实现转跳属性文档在模板上调用出转跳地址
Nov 04 PHP
laravel中命名路由的使用方法
Feb 24 PHP
Laravel框架Request、Response及Session操作示例
May 06 PHP
使用PHPWord生成word文档的方法详解
Jun 06 PHP
PHP的Trait机制原理与用法分析
Oct 18 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
回答PHPCHINA上的几个问题:URL映射
2007/02/14 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
2015/03/05 PHP
PHP发送AT指令实例代码
2016/05/26 PHP
实例讲解PHP表单处理
2019/02/15 PHP
在phpstudy集成环境下的nginx服务器下配置url重写
2019/12/02 PHP
利用ASP发送和接收XML数据的处理方法与代码
2007/11/13 Javascript
输入框的字数时时统计—关于 onpropertychange 和 oninput 使用
2011/10/21 Javascript
js内存泄露的几种情况详细探讨
2013/05/31 Javascript
JS判断网页广告是否被浏览器拦截过滤的代码
2015/04/05 Javascript
用JavaScript实现页面重定向功能的教程
2015/06/04 Javascript
JS实现网页Div层Clone拖拽效果
2015/09/26 Javascript
js的form表单提交url传参数(包含+等特殊字符)的两种解决方法
2016/05/25 Javascript
javascript 作用于作用域链的详解
2017/09/27 Javascript
JavaScript中this用法学习笔记
2019/03/17 Javascript
Angular6使用forRoot() 注册单一实例服务问题
2019/08/27 Javascript
vue之a-table中实现清空选中的数据
2019/11/07 Javascript
在vue中使用inheritAttrs实现组件的扩展性介绍
2020/12/07 Vue.js
python BeautifulSoup使用方法详解
2013/11/21 Python
python通过post提交数据的方法
2015/05/06 Python
python实现文本文件合并
2015/12/29 Python
Python学习笔记之if语句的使用示例
2017/10/23 Python
Python双向循环链表实现方法分析
2018/07/30 Python
Django中使用Celery的教程详解
2018/08/24 Python
python GUI实现小球满屏乱跑效果
2019/05/09 Python
Pythonic版二分查找实现过程原理解析
2020/08/11 Python
详解Python 中的容器 collections
2020/08/17 Python
初中女生自我鉴定
2013/12/19 职场文书
学校联谊活动方案
2014/02/15 职场文书
致接力运动员广播稿
2014/02/17 职场文书
2014两会学习心得:榜样精神伴我行
2014/03/17 职场文书
部队反四风对照检查材料
2014/09/26 职场文书
初三毕业评语
2014/12/26 职场文书
求职自我推荐信
2015/03/24 职场文书
vscode中使用npm安装babel的方法
2021/08/02 Javascript
vue代码分块和懒加载非必要资源文件
2022/04/11 Vue.js
讨论nginx location 顺序问题
2022/05/30 Servers