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 相关文章推荐
php5 and xml示例
Nov 22 PHP
PHP中VC6、VC9、TS、NTS版本的区别与用法详解
Oct 26 PHP
php通过ajax实现双击table修改内容
Apr 28 PHP
PHP中的use关键字概述
Jul 23 PHP
thinkphp文件引用与分支结构用法实例
Nov 26 PHP
php实现过滤UBB代码的类
Mar 12 PHP
详解Window7 下开发php扩展
Dec 31 PHP
PHP微信开发之微信录音临时转永久存储
Jan 26 PHP
PHP基于curl模拟post提交json数据示例
Jun 22 PHP
php用户名的密码加密更安全的方法
Jun 21 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
Jul 26 PHP
PHP7修改的函数
Mar 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
初学CAKEPHP 基础教程
2009/11/02 PHP
php获取url字符串截取路径的文件名和扩展名的函数
2010/01/22 PHP
PHP运行时强制显示出错信息的代码
2011/04/20 PHP
php获取用户浏览器版本的方法
2015/01/03 PHP
php+jQuery+Ajax实现点赞效果的方法(附源码下载)
2020/07/21 PHP
Smarty分页实现方法完整实例
2016/05/11 PHP
基于PHPexecl类生成复杂的报表表头示例
2016/10/14 PHP
php strftime函数的详细用法
2018/06/21 PHP
PHP进阶学习之依赖注入与Ioc容器详解
2019/06/19 PHP
javascript 操作cookies及正确使用cookies的属性
2009/10/15 Javascript
js键盘事件的keyCode
2014/07/29 Javascript
JavaScript Math.floor方法(对数值向下取整)
2015/01/09 Javascript
JavaScript之Object类型介绍
2015/04/01 Javascript
NodeJs测试框架Mocha的安装与使用
2017/03/28 NodeJs
vue-cli webpack 引入jquery的方法
2018/01/10 jQuery
jQuery事件绑定和解绑、事件冒泡与阻止事件冒泡及弹出应用示例
2019/05/13 jQuery
详解ES6 扩展运算符的使用与注意事项
2020/11/12 Javascript
[01:04:06]DOTA2上海特级锦标赛A组资格赛#2 Secret VS EHOME第一局
2016/02/26 DOTA
Python MySQL数据库连接池组件pymysqlpool详解
2017/07/07 Python
Python基于socket模块实现UDP通信功能示例
2018/04/10 Python
flask session组件的使用示例
2018/12/25 Python
python如何获取当前文件夹下所有文件名详解
2019/01/25 Python
python数组循环处理方法
2019/08/26 Python
python中元组的用法整理
2020/06/15 Python
Python爬虫实例——scrapy框架爬取拉勾网招聘信息
2020/07/14 Python
详解CSS3中nth-child与nth-of-type的区别
2017/01/05 HTML / CSS
瑞典手机壳品牌:Richmond & Finch
2018/04/28 全球购物
俄语翻译实习生的自我评价分享
2013/11/06 职场文书
英语演讲稿范文
2014/01/03 职场文书
医院检讨书范文
2014/02/01 职场文书
自主招生自荐信指南
2014/02/04 职场文书
监督检查工作方案
2014/05/28 职场文书
县长群众路线对照检查材料思想汇报
2014/10/02 职场文书
雷锋观后感
2015/06/10 职场文书
MongoDB数据库常用的10条操作命令
2021/06/18 MongoDB
SpringBoot项目中控制台日志的保存配置操作
2021/06/18 Java/Android