php cookie 作用范围C不要在当前页面使用你的cookie
2015-01-24信息快讯网
这两天在调试bug的时候遇到了一个问题,就是页面莫名其妙的会跳转到登陆页面
因为在本地测试完全没有问题,所以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下使用iconv需要注意的问题
批量修改RAR文件注释的php代码
为PHP初学者的8点有效建议
PHP程序员最常犯的11个MySQL错误小结
Windows 下的 PHP-PEAR 安装方法
《PHP编程最快明白》第四讲:日期、表单接收、session、cookie
理解php原理的opcodes(操作码)
PHP OPCode缓存 APC详细介绍
PHP之COOKIE支持详解
php下删除一篇文章生成的多个静态页面
php抓取页面与代码解析 推荐
PHP zlib扩展实现页面GZIP压缩输出
php文章内容分页并生成相应的htm静态页面代码
php下用cookie统计用户访问网页次数的代码
使用PHP提取视频网站页面中的FLASH地址的代码
php读取javascript设置的cookies的代码
php session和cookie使用说明
php SQL之where语句生成器
php xml实例 留言本
php xml文件操作实现代码(二)
php xml文件操作代码(一)
php 静态化实现代码
php FPDF类库应用实现代码
php cookie 登录验证示例代码
php 删除cookie和浏览器重定向
php cookis创建实现代码
简化php模板页面中分页代码的解析
PHP setcookie() cannot modify header information 的解决方法
php 禁止页面缓存输出
php 页面执行时间计算代码
方便实用的PHP生成静态页面类(非smarty)第1/2页
Php Cookie的一个使用注意点
不用mod_rewrite直接用php实现伪静态化页面代码
php中cookie的作用域