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 相关文章推荐
linux php mysql数据库备份实现代码
Mar 10 PHP
php截取utf-8中文字符串乱码的解决方法
Mar 29 PHP
php数字游戏 计算24算法
Jun 10 PHP
探讨file_get_contents与curl效率及稳定性的分析
Jun 06 PHP
对于PHP 5.4 你必须要知道的
Aug 07 PHP
Session的工作机制详解和安全性问题(PHP实例讲解)
Apr 10 PHP
php更新mysql后获取改变行数的方法
Dec 25 PHP
ThinkPHP框架搭建及常见问题(XAMPP安装失败、Apache/MySQL启动失败)
Apr 15 PHP
PHP+mysql实现从数据库获取下拉树功能示例
Jan 06 PHP
PHP常用的三种设计模式
Feb 17 PHP
php获取网站根目录物理路径的几种方法(推荐)
Mar 04 PHP
php使用json-schema模块实现json校验示例
Sep 28 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 5.0对象模型深度探索之对象复制
2008/03/27 PHP
php HtmlReplace输入过滤安全函数
2010/07/03 PHP
基于PHP开发中的安全防范知识详解
2013/06/06 PHP
Javascript 页面模板化很多人没有使用过的方法
2012/06/05 Javascript
jQuery图片滚动图片的效果(另类实现)
2013/06/02 Javascript
js兼容的placeholder属性详解
2013/08/18 Javascript
js函数获取html中className所在的内容并去除标签
2013/09/08 Javascript
页面装载js及性能分析方法介绍
2014/03/21 Javascript
node.js中的dns.getServers方法使用说明
2014/12/08 Javascript
EasyUi datagrid 实现表格分页
2015/02/10 Javascript
jQuery实现复选框成对选择及对应取消的方法
2015/03/03 Javascript
jQuery实现点击表格单元格就可以编辑内容的方法【测试可用】
2016/08/01 Javascript
微信小程序 form组件详解
2016/10/25 Javascript
BootStrap树状图显示功能
2016/11/24 Javascript
基于vue2实现上拉加载功能
2017/11/28 Javascript
vue2.0实现移动端的输入框实时检索更新列表功能
2018/05/08 Javascript
微信小程序实现商品属性联动选择
2019/02/15 Javascript
Vue 实现html中根据类型显示内容
2019/10/28 Javascript
[02:25]DOTA2英雄基础教程 熊战士
2014/01/03 DOTA
[02:05]2014DOTA2西雅图邀请赛 专访啸天mik夫妻档
2014/07/08 DOTA
[02:03]完美世界DOTA2联赛10月30日赛事集锦
2020/10/31 DOTA
Python 变量类型及命名规则介绍
2013/06/08 Python
Python OpenCV 使用滑动条来调整函数参数的方法
2019/07/08 Python
Python编程中类与类的关系详解
2019/08/08 Python
python集合常见运算案例解析
2019/10/17 Python
python使用QQ邮箱实现自动发送邮件
2020/06/22 Python
Pycharm2020.1安装中文语言插件的详细教程(不需要汉化)
2020/08/07 Python
HTML5实现多张图片上传功能
2016/03/11 HTML / CSS
德国排名第一的主题公园门票网站:Attraction Tickets Direct
2019/09/09 全球购物
亚洲在线旅行门户网站:Expedia.com.hk(智游网)
2020/04/14 全球购物
Java的基础面试题附答案
2016/01/10 面试题
委托协议书范本
2014/04/22 职场文书
教师节慰问信
2015/02/15 职场文书
放飞理想主题班会
2015/08/14 职场文书
酒吧七夕情人节宣传语
2015/11/24 职场文书
通过shell脚本对mysql的增删改查及my.cnf的配置
2021/07/07 MySQL