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入门
Oct 09 PHP
PHPWind与Discuz截取字符函数substrs与cutstr性能比较
Dec 05 PHP
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
Dec 02 PHP
个人写的PHP验证码生成类分享
Aug 21 PHP
php将数组转换成csv格式文件输出的方法
Mar 14 PHP
YII CLinkPager分页类扩展增加显示共多少页
Jan 29 PHP
php简单压缩css样式示例
Sep 22 PHP
cakephp2.X多表联合查询join及使用分页查询的方法
Feb 23 PHP
PHP使用finfo_file()函数检测上传图片类型的实现方法
Apr 18 PHP
php写一个函数,实现扫描并打印出自定目录下(含子目录)所有jpg文件名
May 26 PHP
PHP基于GD库实现的生成图片缩略图函数示例
Jul 05 PHP
laravel学习笔记之模型事件的几种用法示例
Aug 15 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
全国FM电台频率大全 - 11 浙江省
2020/03/11 无线电
精通php的十大要点(上)
2009/02/04 PHP
Php Mssql操作简单封装支持存储过程
2009/12/11 PHP
PHP CURL或file_get_contents获取网页标题的代码及两者效率的稳定性问题
2015/11/30 PHP
PHP实现的mysql读写分离操作示例
2018/05/22 PHP
在视频前插入广告
2006/11/20 Javascript
jQuery事件绑定.on()简要概述及应用
2013/02/07 Javascript
JavaScript创建类/对象的几种方式概述及实例
2013/05/06 Javascript
jqgrid 表格数据导出实例
2013/11/21 Javascript
JavaScript匿名函数用法分析
2015/02/13 Javascript
深入理解JavaScript系列(29):设计模式之装饰者模式详解
2015/03/03 Javascript
node.js中格式化数字增加千位符的几种方法
2015/07/03 Javascript
用JavaScript判断CSS浏览器类型前缀的两种方法
2015/10/08 Javascript
javascript对浅拷贝和深拷贝的详解
2016/10/14 Javascript
微信小程序 网络API Websocket详解
2016/11/09 Javascript
BootstrapValidator实现注册校验和登录错误提示效果
2017/03/10 Javascript
bootstrap Table的一些小操作
2017/11/01 Javascript
JavaScript数组基于交换的排序示例【冒泡排序】
2018/07/21 Javascript
监控微信小程序中的慢HTTP请求过程详解
2019/07/05 Javascript
扫微信小程序码实现网站登陆实现解析
2019/08/20 Javascript
javascript的delete运算符知识点总结
2019/11/19 Javascript
Python下的Softmax回归函数的实现方法(推荐)
2017/01/26 Python
Python 专题六 局部变量、全局变量global、导入模块变量
2017/03/20 Python
Centos7 下安装最新的python3.8
2019/10/28 Python
Python格式化输出--%s,%d,%f的代码解析
2020/04/29 Python
python中如何使用虚拟环境
2020/10/14 Python
python实现登录与注册系统
2020/11/30 Python
html5教程制作简单画板代码分享
2013/12/04 HTML / CSS
上班上网检讨书
2014/01/29 职场文书
多媒体专业自我鉴定
2014/02/28 职场文书
2014年教师节红领巾广播稿
2014/09/10 职场文书
2014党员学习习主席讲话思想汇报
2014/09/15 职场文书
2015年党员承诺书
2015/01/21 职场文书
集结号观后感
2015/06/08 职场文书
李强优秀员工观后感
2015/06/16 职场文书
2016年度农村党员干部主题教育活动总结
2016/04/06 职场文书