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_SELF的安全问题
Sep 05 PHP
php入门学习知识点六 PHP文件的读写操作代码
Jul 14 PHP
php中计算未知长度的字符串哪个字符出现的次数最多的代码
Aug 14 PHP
php遍历目录输出目录及其下的所有文件示例
Jan 27 PHP
php中实现精确设置session过期时间的方法
Jul 17 PHP
PHP实现微信发红包程序
Aug 24 PHP
WordPress中查询文章的循环Loop结构及用法分析
Dec 17 PHP
简介WordPress中用于获取首页和站点链接的PHP函数
Dec 17 PHP
PHP的PDO操作简单示例
Mar 30 PHP
PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析
Oct 11 PHP
thinkphp整合微信支付代码分享
Nov 24 PHP
PHP 数组操作详解【遍历、指针、函数等】
May 13 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网站提速三大“软”招
2006/10/09 PHP
探讨PHP删除文件夹的三种方法
2013/06/09 PHP
PHP jQuery+Ajax结合写批量删除功能
2017/05/19 PHP
PHP四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】
2018/04/27 PHP
thinkphp5.1框架模板布局与模板继承用法分析
2019/07/19 PHP
在chrome浏览器中,防止input[text]和textarea在聚焦时出现黄色边框的解决方法
2011/05/24 Javascript
js 判断脚本加载完毕的代码
2011/07/13 Javascript
js 异步操作回调函数如何控制执行顺序
2013/12/24 Javascript
jquery对单选框,多选框,文本框等常见操作小结
2014/01/08 Javascript
JS基于Mootools实现的个性菜单效果代码
2015/10/21 Javascript
分享JavaScript与Java中MD5使用两个例子
2015/12/23 Javascript
jquery实现文本框的禁用和启用
2016/12/07 Javascript
JS实现列表页面隔行变色效果
2017/03/25 Javascript
利用JavaScript对中文(汉字)进行排序实例详解
2017/06/18 Javascript
详解vue express启动数据服务
2017/07/05 Javascript
微信小程序联网请求的轮播图
2017/07/07 Javascript
js事件委托和事件代理案例分享
2017/07/25 Javascript
原生JS实现天气预报
2020/06/16 Javascript
如何阻止移动端浏览器点击图片浏览
2020/08/29 Javascript
node.js文件的复制、创建文件夹等相关操作
2021/02/05 Javascript
python访问纯真IP数据库的代码
2011/05/19 Python
python学习笔记:字典的使用示例详解
2014/06/13 Python
python中文编码问题小结
2014/09/28 Python
解决python3 安装不了PIL的问题
2019/08/16 Python
python 列表推导式使用详解
2019/08/29 Python
用 Python 制作地球仪的方法
2020/04/24 Python
Keras设定GPU使用内存大小方式(Tensorflow backend)
2020/05/22 Python
html5模拟平抛运动(模拟小球平抛运动过程)
2013/07/25 HTML / CSS
美国最大的家庭鞋类零售商之一:Shoe Carnival
2017/10/06 全球购物
意大利包包和行李箱销售网站:Bagaglio.it
2021/03/02 全球购物
军校大学生个人的自我评价
2014/02/17 职场文书
家长学校实施方案
2014/03/15 职场文书
工人先锋号事迹材料
2014/12/24 职场文书
质量保证书格式
2015/02/27 职场文书
施工安全员岗位职责
2015/04/11 职场文书
使用Redis实现实时排行榜功能
2021/07/02 Redis