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 相关文章推荐
IIS6的PHP最佳配置方法
Mar 19 PHP
PHP autoload与spl_autoload自动加载机制的深入理解
Jun 05 PHP
通过table标签,PHP输出EXCEL的实现方法
Jul 24 PHP
ThinkPHP之getField详解
Jun 20 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十三)
Jun 26 PHP
PHP易混淆函数的区别及用法汇总
Nov 22 PHP
PHP中substr_count()函数获取子字符串出现次数的方法
Jan 07 PHP
详解PHP安装mysql.so扩展的方法
Dec 31 PHP
php微信开发之关键词回复功能
Jun 13 PHP
PHP面向对象程序设计(OOP)之方法重写(override)操作示例
Dec 21 PHP
PHP面向对象类型约束用法分析
Jun 12 PHP
Smarty模板语法详解
Jul 20 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实现登陆验证码(类似条行码状)
2006/10/09 PHP
php实现的仿阿里巴巴实现同类产品翻页
2009/12/11 PHP
php获取错误信息的方法
2015/07/17 PHP
php实现的微信红包算法分析(非官方)
2015/09/25 PHP
Symfony2学习笔记之系统路由详解
2016/03/17 PHP
php获取linux命令结果的实例
2017/03/13 PHP
PHP用continue跳过本次循环中剩余代码的注意点
2017/06/27 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
2018/02/08 PHP
PHP如何使用cURL实现Get和Post请求
2020/07/11 PHP
javascript 树控件 比较好用
2009/06/11 Javascript
JavaScript中window.open用法实例详解
2015/04/15 Javascript
JSON字符串和对象之间的转换详解
2015/05/26 Javascript
JavaScript实现获得所有兄弟节点的方法
2015/07/23 Javascript
jQuery给元素添加样式的方法详解
2015/12/30 Javascript
form+iframe解决跨域上传文件的方法
2016/11/18 Javascript
js浏览器滚动条卷去的高度scrolltop(实例讲解)
2017/07/07 Javascript
微信小程序去除左上角返回键的实现方法
2020/03/06 Javascript
vue实现员工信息录入功能
2020/06/11 Javascript
Python中的对象,方法,类,实例,函数用法分析
2015/01/15 Python
Python实现的Excel文件读写类
2015/07/30 Python
Python多进程同步简单实现代码
2016/04/27 Python
Python爬虫包 BeautifulSoup  递归抓取实例详解
2017/01/28 Python
解决pycharm运行时interpreter为空的问题
2018/10/29 Python
波兰最早的运动鞋精品店之一:Street Supply
2019/08/29 全球购物
Shell如何接收变量输入
2012/09/24 面试题
视光学专业毕业生推荐信
2013/10/28 职场文书
电信营业员自我评价分享
2014/01/17 职场文书
人力资源管理专业自荐信
2014/06/24 职场文书
模具设计与制造专业求职信
2014/07/19 职场文书
中秋晚会活动方案
2014/08/31 职场文书
心得体会的写法
2014/09/05 职场文书
长城英文导游词
2015/01/30 职场文书
关于法制教育的宣传语
2015/07/13 职场文书
房屋买卖定金协议书
2016/03/21 职场文书
写好Python代码的几条重要技巧
2021/05/21 Python
Nginx反向代理配置的全过程记录
2021/06/22 Servers