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 相关文章推荐
PHP正则的Unknown Modifier错误解决方法
Mar 02 PHP
php一个找二层目录的小东东
Aug 02 PHP
PHP 透明水印生成代码
Aug 27 PHP
php中json_encode UTF-8中文乱码的更好解决方法
Sep 28 PHP
php保存二进制原始数据为图片的程序代码
Oct 14 PHP
php中删除数组的第一个元素和最后一个元素的函数
Mar 07 PHP
了解PHP的返回引用和局部静态变量
Jun 04 PHP
PHP常用工具类大全附全部代码下载
Dec 07 PHP
微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法
Jan 12 PHP
php基于闭包实现函数的自调用(递归)实例分析
Nov 11 PHP
PHP异步进程助手async-helper
Feb 05 PHP
PHP simplexml_import_dom()函数讲解
Feb 03 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
php 结果集的分页实现代码
2009/03/10 PHP
php 二维数组快速排序算法的实现代码
2017/10/17 PHP
无阻塞加载脚本分析[全]
2011/01/20 Javascript
基于jquery的多功能软键盘插件
2012/07/25 Javascript
读取input:file的路径并显示本地图片的方法
2013/09/23 Javascript
JavaScript中setInterval的用法总结
2013/11/20 Javascript
js关于精确计算和数值格式化以及直接引js文件
2014/01/28 Javascript
jQuery中:header选择器用法实例
2014/12/29 Javascript
avalonjs制作响应式瀑布流特效
2015/05/06 Javascript
JavaScript知识点总结之如何提高性能
2016/01/15 Javascript
AngularJS实现给动态生成的元素绑定事件的方法
2016/12/14 Javascript
Angular4学习笔记之新建项目的方法
2017/07/18 Javascript
jQuery中复合选择器简单用法示例
2018/03/31 jQuery
利用Vconsole和Fillder进行移动端抓包调试方法
2019/03/05 Javascript
vue 解决异步数据更新问题
2019/10/29 Javascript
vue 限制input只能输入正数的操作
2020/08/05 Javascript
python使用fcntl模块实现程序加锁功能示例
2017/06/23 Python
tensorflow创建变量以及根据名称查找变量
2018/03/10 Python
python将字符串转换成json的方法小结
2019/07/09 Python
python hough变换检测直线的实现方法
2019/07/12 Python
Python魔法方法 容器部方法详解
2020/01/02 Python
利用python中集合的唯一性实现去重
2020/02/11 Python
keras 回调函数Callbacks 断点ModelCheckpoint教程
2020/06/18 Python
Python自带的IDE在哪里
2020/07/01 Python
台湾菁英交友:结识黄金单身的台湾人
2018/01/22 全球购物
北承题目(C++)
2012/05/16 面试题
企划专员岗位职责
2013/12/09 职场文书
仓库组长岗位职责
2014/01/29 职场文书
保险公司演讲稿
2014/09/02 职场文书
教师岗位职责
2015/02/03 职场文书
公司年夜饭通知
2015/04/25 职场文书
员工手册编写范本
2015/05/14 职场文书
2015七夕情人节宣传语
2015/07/14 职场文书
JavaScript 事件捕获冒泡与捕获详情
2021/11/11 Javascript
node快速搭建后台的实现步骤
2022/02/18 NodeJs
Android开发 使用文件储存的方式保存QQ密码
2022/04/24 Java/Android