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 相关文章推荐
工厂模式在Zend Framework中应用介绍
Jul 10 PHP
php加密解密实用类分享
Jan 07 PHP
php查询ip所在地的方法
Dec 05 PHP
javascript数组与php数组的地址传递及值传递用法实例
Jan 22 PHP
php文件上传简单实现方法
Jan 24 PHP
php使用parse_url和parse_str解析URL
Feb 22 PHP
php计算两个整数的最大公约数常用算法小结
Mar 05 PHP
php判断对象是派生自哪个类的方法
Jun 20 PHP
在WordPress中使用wp_count_posts函数来统计文章数量
Jan 05 PHP
微信开发之网页授权获取用户信息(二)
Jan 08 PHP
PHP常用技巧汇总
Mar 04 PHP
php结合mysql与mysqli扩展处理事务的方法
Jun 29 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代码优化技巧小结
2015/09/29 PHP
很全的显示阴历(农历)日期的js代码
2009/01/01 Javascript
Javascript异步表单提交,图片上传,兼容异步模拟ajax技术
2010/05/10 Javascript
JS焦点图切换,上下翻转
2011/05/12 Javascript
JavaScript字符串对象fromCharCode方法入门实例(用于把Unicode值转换为字符串)
2014/10/17 Javascript
深入浅析AngularJS中的module(模块)
2016/01/04 Javascript
js弹出窗口返回值的简单实例
2016/05/28 Javascript
深入理解Javascript中的自执行匿名函数
2016/06/03 Javascript
Node.js中防止错误导致的进程阻塞的方法
2016/08/11 Javascript
JS限定手机版中图片大小随分辨率自动调整的方法
2016/12/05 Javascript
jQuery中animate的几种用法与注意事项
2016/12/12 Javascript
JS实现AES加密并与PHP互通的方法分析
2017/04/19 Javascript
深入浅析Nodejs的Http模块
2017/06/20 NodeJs
React中使用UEditor百度富文本的方法
2018/08/22 Javascript
谈谈为什么你的 JavaScript 代码如此冗长
2019/01/30 Javascript
el-table树形表格表单验证(列表生成序号)
2020/05/31 Javascript
Python正则表达式介绍
2012/08/06 Python
python搭建简易服务器分析与实现
2012/12/15 Python
python海龟绘图实例教程
2014/07/24 Python
Python实现向服务器请求压缩数据及解压缩数据的方法示例
2017/06/09 Python
Django中使用Whoosh进行全文检索的方法
2019/03/31 Python
Python3.5 + sklearn利用SVM自动识别字母验证码方法示例
2019/05/10 Python
Python3 串口接收与发送16进制数据包的实例
2019/06/12 Python
postman和python mock测试过程图解
2020/02/22 Python
在Keras中CNN联合LSTM进行分类实例
2020/06/29 Python
英国最大的汽车配件在线商店:Euro Car Parts
2019/09/30 全球购物
商场经理竞聘演讲稿
2014/01/01 职场文书
个人能力自我鉴赏
2014/01/25 职场文书
毕业生如何写自我鉴定
2014/03/15 职场文书
股东授权委托书范文
2014/09/13 职场文书
2015年新农合工作总结
2015/03/30 职场文书
工厂员工辞职信范文
2015/05/12 职场文书
少先队入队仪式主持词
2015/07/04 职场文书
2019年特色火锅店的创业计划书模板
2019/08/28 职场文书
Vue3如何理解ref toRef和toRefs的区别
2022/02/18 Vue.js
git stash(储藏)的用法总结
2022/06/25 Servers