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执行速度全攻略
Oct 09 PHP
IIS下配置Php+Mysql+zend的图文教程
Dec 08 PHP
使用PHP数组实现无限分类,不使用数据库,不使用递归.
Dec 09 PHP
PHP读取网页文件内容的实现代码(fopen,curl等)
Jun 23 PHP
解析如何屏蔽php中的phpinfo()函数
Jun 06 PHP
8个必备的PHP功能实例代码
Oct 27 PHP
PHP的魔术常量__METHOD__简介
Jul 08 PHP
ThinkPHP 表单自动验证运用示例
Oct 13 PHP
PHP人民币金额转大写实例代码
Oct 02 PHP
php使用PDO下exec()函数查询执行后受影响行数的方法
Mar 28 PHP
PHP实现会员账号单唯一登录的方法分析
Mar 07 PHP
基于PHP实现生成随机水印图片
Dec 09 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中PCRE正则解析代码详解
2019/04/26 PHP
PHP设计模式(一)工厂模式Factory实例详解【创建型】
2020/05/02 PHP
PHP类的自动加载与命名空间用法实例分析
2020/06/05 PHP
Jquery下的26个实用小技巧(jQuery tips, tricks &amp; solutions)
2010/03/01 Javascript
超酷的网页音乐播放器DewPlayer使用方法
2010/12/18 Javascript
Node.js和PHP根据ip获取地理位置的方法
2014/03/14 Javascript
JS动态添加Table的TR,TD实现方法
2015/01/28 Javascript
Javascript中的arguments与重载介绍
2015/03/15 Javascript
原生js和jquery实现图片轮播特效
2015/04/23 Javascript
javascript动态设置样式style实例分析
2015/05/13 Javascript
javascript中createElement的两种创建方式
2015/05/14 Javascript
jQuery操作iframe中js函数的方法小结
2016/07/06 Javascript
jQuery用FormData实现文件上传的方法
2016/11/21 Javascript
Angularjs 实现动态添加控件功能
2017/05/25 Javascript
JavaScript如何操作css
2020/10/24 Javascript
微信小程序实现电影App导航和轮播
2020/11/30 Javascript
在Python中操作时间之mktime()方法的使用教程
2015/05/22 Python
python定向爬虫校园论坛帖子信息
2018/07/23 Python
5分钟 Pipenv 上手指南
2018/12/20 Python
python3.7 使用pymssql往sqlserver插入数据的方法
2019/07/08 Python
在django中自定义字段Field详解
2019/12/03 Python
Python稀疏矩阵及参数保存代码实现
2020/04/18 Python
python如何查看安装了的模块
2020/06/23 Python
python 6种方法实现单例模式
2020/12/15 Python
HTML5 Canvas旋转动画的2个代码例子(一个旋转的太极图效果)
2014/04/10 HTML / CSS
Needle & Thread官网:英国仙女品牌
2018/01/13 全球购物
校园联欢晚会主持词
2014/03/17 职场文书
应届生自荐书
2014/06/23 职场文书
2014红色之旅心得体会
2014/10/07 职场文书
2014年财务部工作总结
2014/11/11 职场文书
2014年学校教学工作总结
2014/12/06 职场文书
同事离别感言
2015/08/04 职场文书
《跨越海峡的生命桥》教学反思
2016/02/18 职场文书
centos8安装nginx1.9.1的详细过程
2021/08/02 Servers
Android自定义ScrollView实现阻尼回弹
2022/04/01 Java/Android
Python何绘制带有背景色块的折线图
2022/04/23 Python