php cookie 作用范围?不要在当前页面使用你的cookie


Posted in PHP onMarch 24, 2009

因为在本地测试完全没有问题,所以ssh到远程服务器上(不是发布服务器,建议不要直接在Publish Server上直接改东西),进行了一下断点的测试,最后发现是一个比较复杂的逻辑中有个函数在构造函数中调用了登陆验证。没有验证通过所以就跳走了。
下面我们通过程序来看一下php cookie的使用,也许你看完上面那段还纳闷,这个和cookie有什么联系呢?
大体说一下在我们的MVC结构中所用的登陆验证:
在controller中的构造函数用有一个专门验证登陆的函数,根据模块是否需要登陆验证来加如此函数。
bug程序:在setcookie后,当前页面进行了登陆验证。
bug原因:当前页面是获得不了在此页刚刚设置的cookie的
下面我们来用程序测试一下:
这里是一个设置cookie的函数,我们现在用的,偷懒了 呵呵

function dsetcookie($var, $value, $life = 0) { 
global $_cookie_domain, $_cookie_path, $_timestamp, $_SERVER; 
setcookie($var, escape($value), $life ? $_timestamp + $life : 0, 
$_cookie_path, $_cookie_domain, $_SERVER['SERVER_PORT'] == 443 ? 1 : 0); 
}

然后建立test1.php,内容如下:
<?php 
$td = date('d'); 
dsetcookie("testvar",$td,30*24*60*60); 
print_r($_COOKIE); 
?>

将会得到一个空的数组array();
那我们在设置完后什么时候才能第一次使用这个$_COOKIE变量呢?
现在我们把test1.php这个程序稍微改动一下:
<?php 
$td = date('d'); 
dsetcookie("testvar",$td,30*24*60*60); 
print_r($_COOKIE);//这个要注释掉 要不然会报header警告 
$location = "test2.php"; 
header("Location: ".$location); 
?>

然后我们在test2.php中来显示$_COOKIE看一下
<?php 
print_r($_COOKIE); 
?>

这里我们将会得到:
Array
(
[testvar] =10
)
这里就能够获得并使用这个cookie值了。
为什么呢?
你可以这么理解:当前设置的Cookie不是立即生效的,而是要等到下一个页面时才能看到.
这是由于在设置的这个页面里Cookie由服务器传递给客户浏览器,在下一个页面浏览器才能把Cookie从
客户的机器里取出传回服务器的原因。

先写到这里:

你可以通过下面的几个链接更加深入的了解一下COOKIE

PHP COOKIE及其使用

Netscape公司关于Cookie的官方原始定义的网址:http://www.netscape.com/newsref/std/cookie_spec.html

PHP 相关文章推荐
使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT
Apr 23 PHP
php获取qq用户昵称和在线状态(实例分析)
Oct 27 PHP
IIS6.0 开启Gzip方法及PHP Gzip函数分享
Jun 08 PHP
ThinkPHP的模版中调用session数据的方法
Jul 01 PHP
PDO预处理语句PDOStatement对象使用总结
Nov 20 PHP
php获取YouTube视频信息的方法
Feb 11 PHP
PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能
Apr 27 PHP
WordPress中用于获取搜索表单的PHP函数使用解析
Jan 05 PHP
Laravel 5.5官方推荐的Nginx配置学习教程
Oct 06 PHP
PHP文件类型检查及fileinfo模块安装使用详解
May 09 PHP
laravel 中某一字段自增、自减的例子
Oct 11 PHP
TP5框架使用QueryList采集框架爬小说操作示例
Mar 26 PHP
php xml实例 留言本
Mar 20 #PHP
php xml文件操作实现代码(二)
Mar 20 #PHP
php xml文件操作代码(一)
Mar 20 #PHP
php 静态化实现代码
Mar 20 #PHP
php FPDF类库应用实现代码
Mar 20 #PHP
php adodb分页实现代码
Mar 19 #PHP
php daodb插入、更新与删除数据
Mar 19 #PHP
You might like
40年前的这部特摄片恐龙特级克塞号80后的共同回忆
2020/03/08 日漫
收音机指标测试方法及仪器
2021/03/01 无线电
php 什么是PEAR?(第三篇)
2009/03/19 PHP
php Memcache 中实现消息队列
2009/11/24 PHP
Uncaught exception com_exception with message Failed to create COM object
2012/01/11 PHP
PHP反向代理类代码
2014/08/15 PHP
Yii调试查看执行SQL语句的方法
2016/07/15 PHP
php使用curl伪造来源ip和refer的方法示例
2018/05/08 PHP
jQuery之按钮组件的深入解析
2013/06/19 Javascript
JavaScipt中栈的实现方法
2016/02/17 Javascript
基于JQuery的$.ajax方法进行异步请求导致页面闪烁的解决办法
2016/05/10 Javascript
js实现为a标签添加事件的方法(使用闭包循环)
2016/08/02 Javascript
微信JS接口大全
2016/08/25 Javascript
扩展jquery easyui tree的搜索树节点方法(推荐)
2016/10/28 Javascript
Bootstrap框架实现广告轮播效果
2016/11/28 Javascript
jquery的父、子、兄弟节点查找,节点的子节点循环方法
2016/12/07 Javascript
vue2.0使用swiper组件实现轮播效果
2017/11/27 Javascript
用vue2.0实现点击选中active其他选项互斥的效果
2018/04/12 Javascript
详解如何理解vue的key属性
2019/04/14 Javascript
前端Electron新手入门教程详解
2019/06/21 Javascript
JS实现移动端双指缩放和旋转方法
2019/12/13 Javascript
pycharm 使用心得(三)Hello world!
2014/06/05 Python
python 基础教程之Map使用方法
2017/01/17 Python
python 读取摄像头数据并保存的实例
2018/08/03 Python
详解Python with/as使用说明
2018/12/13 Python
Python PO设计模式的具体使用
2019/08/16 Python
python爬虫 批量下载zabbix文档代码实例
2019/08/21 Python
python全局变量引用与修改过程解析
2020/01/07 Python
美国购买汽车零件网站:Buy Auto Parts
2018/04/02 全球购物
园林设计师自荐信
2013/11/18 职场文书
工程测量与监理专业应届生求职信
2013/11/27 职场文书
优秀共产党员先进事迹
2014/01/27 职场文书
小学生检讨书大全
2014/02/06 职场文书
幼儿园教师教育感言
2014/02/28 职场文书
李开复演讲稿
2014/05/24 职场文书
2019餐饮行业创业计划书!
2019/06/27 职场文书