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
php实现mysql同步的实现方法
Oct 21 PHP
php的urlencode()URL编码函数浅析
Aug 09 PHP
Windows下部署Apache+PHP+MySQL运行环境实战
Aug 31 PHP
PHP分页效率终结版(推荐)
Jul 01 PHP
php addslashes 利用递归实现使用反斜线引用字符串
Aug 05 PHP
php中AES加密解密的例子小结
Feb 18 PHP
php实现过滤表单提交中html标签的方法
Oct 17 PHP
php获取从html表单传递数组的方法
Mar 20 PHP
ThinkPHP中html:list标签用法分析
Jan 09 PHP
thinkphp实现图片上传功能
Jan 13 PHP
PHP7新增运算符用法实例分析
Sep 26 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支持页面回退的两种方法
2008/01/10 PHP
php 引用(&amp;)详解
2009/11/20 PHP
dhtmlxTree目录树增加右键菜单以及拖拽排序的实现方法
2013/04/26 PHP
浅析ThinkPHP中execute和query方法的区别
2014/06/13 PHP
Yii使用CLinkPager分页实例详解
2014/07/23 PHP
php生成百度sitemap站点地图类函数实例
2014/10/17 PHP
php可生成缩略图的文件上传类实例
2014/12/17 PHP
PHP AjaxForm提交图片上传并显示图片源码
2016/11/29 PHP
laravel-admin的图片删除实例
2019/09/30 PHP
jQuery表单验证插件formValidator(改进版)
2012/02/03 Javascript
使用js检测浏览器的实现代码
2013/05/14 Javascript
jquery等宽输出文字插件使用介绍
2013/09/18 Javascript
JavaScript Array对象扩展indexOf()方法
2014/05/09 Javascript
javascript实现限制上传文件大小
2015/02/06 Javascript
jQuery Validate初步体验(二)
2015/12/12 Javascript
EasyUI学习之DataGird分页显示数据
2016/12/29 Javascript
vue实现ajax滚动下拉加载,同时具有loading效果(推荐)
2017/01/11 Javascript
JavaScript反弹动画效果的实现代码
2017/07/13 Javascript
Scala解析Json字符串的实例详解
2017/10/11 Javascript
对vue中v-on绑定自定事件的实例讲解
2018/09/06 Javascript
node实现生成带参数的小程序二维码并保存到本地功能示例
2018/12/05 Javascript
js打开word文档预览操作示例【不是下载】
2019/05/23 Javascript
JS实现canvas简单小画板功能
2020/06/23 Javascript
Node.js文本文件BOM头的去除方法
2020/11/22 Javascript
[01:17:55]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
分析python动态规划的递归、非递归实现
2018/03/04 Python
Python3实现打印任意宽度的菱形代码
2020/04/12 Python
Python创建自己的加密货币的示例
2021/03/01 Python
关于前端上传文件全面基础扫盲贴(入门)
2019/08/01 HTML / CSS
html5指南-2.如何操作document metadata
2013/01/07 HTML / CSS
银行求职信个人范文
2013/12/16 职场文书
创业计划书的内容步骤和要领
2014/01/04 职场文书
小学三年级数学教学反思
2014/01/31 职场文书
工作总结与自我评价
2014/09/18 职场文书
幼儿园教师师德师风承诺书
2015/04/28 职场文书
APP界面设计技巧和注意事项
2022/04/29 杂记