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中is_file不能替代file_exists的理由
Mar 04 PHP
PHP多文件上传类实例
Mar 07 PHP
php将HTML表格每行每列转为数组实现采集表格数据的方法
Apr 03 PHP
YiiFramework入门知识点总结(图文教程)
Dec 28 PHP
PHP使用http_build_query()构造URL字符串的方法
Apr 02 PHP
Yii2增加验证码步骤详解
Apr 25 PHP
微信支付开发订单查询实例
Jul 12 PHP
Yii2下session跨域名共存的解决方案
Feb 04 PHP
php json转换相关知识(小结)
Dec 21 PHP
浅谈php使用curl模拟多线程发送请求
Mar 08 PHP
php实现银联商务公众号+服务窗支付的示例代码
Oct 12 PHP
TP3.2框架分页相关实现方法分析
Jun 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
基于empty函数的判断详解
2013/06/17 PHP
PHP 文件编程综合案例-文件上传的实现
2013/07/03 PHP
PHP中Memcache操作类及用法实例
2014/12/12 PHP
实例分析基于PHP微信网页获取用户信息
2017/11/24 PHP
PHP simplexml_load_string()函数实例讲解
2019/02/03 PHP
TP5框架实现自定义分页样式的方法示例
2020/04/05 PHP
提高网站性能之 如何对待JavaScript
2009/10/31 Javascript
ASP中进行HTML数据及JS数据编码函数
2009/11/11 Javascript
Extjs在exlipse中设置自动提示的方法
2010/04/07 Javascript
获取body标签的两种方法
2011/10/13 Javascript
获取中文字符串的实际长度代码
2014/06/05 Javascript
浅谈javascript中自定义模版
2015/01/29 Javascript
jQuery中noconflict函数的实现原理分解
2015/02/03 Javascript
js实现鼠标悬停图片上时滚动文字说明的方法
2015/02/17 Javascript
jQuery向父辈遍历的简单方法
2016/09/18 Javascript
Nodejs中使用puppeteer控制浏览器中视频播放功能
2019/08/26 NodeJs
详解Vue+elementUI build打包部署后字体图标丢失问题
2020/07/13 Javascript
在vue中axios设置timeout超时的操作
2020/09/04 Javascript
Vue 数据响应式相关总结
2021/01/28 Vue.js
[56:41]iG vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/17 DOTA
跟老齐学Python之Python安装
2014/09/12 Python
为Python程序添加图形化界面的教程
2015/04/29 Python
详解Python网络爬虫功能的基本写法
2016/01/28 Python
pandas数据分组和聚合操作方法
2018/04/11 Python
python编写暴力破解zip文档程序的实例讲解
2018/04/24 Python
Django实现支付宝付款和微信支付的示例代码
2018/07/25 Python
使用tqdm显示Python代码执行进度功能
2019/12/08 Python
Python绘制组合图的示例
2020/09/18 Python
HTML5不支持标签和新增标签详解
2016/06/27 HTML / CSS
捷克建筑材料网上商店:DEK.cz
2021/03/06 全球购物
《庐山的云雾》教学反思
2014/04/22 职场文书
暂住证证明
2015/06/19 职场文书
幼儿园科学课教学反思
2016/03/03 职场文书
tensorflow中的数据类型dtype用法说明
2021/05/26 Python
低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限
2021/07/01 MySQL
MySQL8.0 Undo Tablespace管理详解
2022/06/16 MySQL