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查询域名状态whois的类
Nov 25 PHP
奇怪的PHP引用效率问题分析
Mar 23 PHP
PHP实现手机归属地查询API接口实现代码
Aug 27 PHP
apache中为php 设置虚拟目录
Dec 17 PHP
PHP中基本HTTP认证技巧分析
Mar 16 PHP
php使用simplexml_load_file加载XML文件并显示XML的方法
Mar 19 PHP
如何使用Gitblog和Markdown建自己的博客
Jul 31 PHP
PHP简单遍历对象示例
Sep 28 PHP
Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
Oct 11 PHP
ThinkPHP3.2框架操作Redis的方法分析
May 05 PHP
Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
Dec 04 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
Feb 18 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
重置版宣传动画
2020/04/09 魔兽争霸
谈谈新手如何学习PHP 默默经典版本
2009/08/04 PHP
PhpMyAdmin出现export.php Missing parameter: what /export_type错误解决方法
2012/08/09 PHP
CI使用Tank Auth转移数据库导致密码用户错误的解决办法
2014/06/12 PHP
PHP连接操作access数据库实例
2015/03/30 PHP
使用phpexcel类实现excel导入mysql数据库功能(实例代码)
2016/05/12 PHP
Laravel5.5 数据库迁移:创建表与修改表示例
2019/10/23 PHP
判断多个元素(RADIO,CHECKBOX等)是否被选择的原理说明
2009/02/18 Javascript
浏览器窗口加载和大小改变事件示例
2014/02/27 Javascript
JS获取随机数函数可自定义最小值最大值
2014/05/08 Javascript
怎么引入(调用)一个JS文件
2016/05/26 Javascript
基于Vue.js实现数字拼图游戏
2016/08/02 Javascript
js注入 黑客之路必备!
2016/09/14 Javascript
jquery图片放大镜效果
2017/06/23 jQuery
jQuery EasyUI的TreeGrid查询功能实现方法
2017/08/08 jQuery
教你完全理解ReentrantLock重入锁
2019/06/03 Javascript
vue本地打开build后生成的dist文件夹index.html问题
2019/09/04 Javascript
详解vue中v-on事件监听指令的基本用法
2020/07/22 Javascript
关于angular引入ng-zorro的问题浅析
2020/09/09 Javascript
Numpy中矩阵matrix读取一列的方法及数组和矩阵的相互转换实例
2018/07/02 Python
numpy的文件存储.npy .npz 文件详解
2018/07/09 Python
python pandas消除空值和空格以及 Nan数据替换方法
2018/10/30 Python
pygame游戏之旅 游戏中添加显示文字
2018/11/20 Python
在pycharm下设置自己的个性模版方法
2019/07/15 Python
python中的socket实现ftp客户端和服务器收发文件及md5加密文件
2020/04/01 Python
Python3内置函数chr和ord实现进制转换
2020/06/05 Python
在印度上传处方,在线订购药品:Medlife
2019/03/28 全球购物
西安众合通用.net笔试题
2013/03/18 面试题
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
2013/09/18 面试题
竞聘医务工作人员的自我评价分享
2013/11/04 职场文书
正规欠条模板
2015/07/03 职场文书
2015年秋季开学典礼校长致辞
2015/07/16 职场文书
民间借贷纠纷起诉书
2015/08/03 职场文书
2015年物业管理员工工作总结
2015/10/15 职场文书
Python序列化与反序列化相关知识总结
2021/06/08 Python
前端vue+express实现文件的上传下载示例
2022/02/18 Vue.js