开发中遇到的PHP中的一个重要bug

王志勇 发表于 2019年03月22日 07:47

虽然PHP的确是公认的最好的语言,最近10年的世界TOP 20编程语言(市场份额),PHP一直名列前10名。PHP为什么好呢?个人觉得,好就好在PHP的设计者,把web开发者在编程中能遇到的问题,大部分都想到了,是一种十分完整的语言(在PHP 5时就已经达到这种水平)。大部分问题,他都有了解决方案。所以我们在开发中,会感觉更加得心应手,这是一个优秀的语言具有的特征。且PHP的执行效率,处于相对中等偏上的水平(与Golang、Node.js这些运行更快的平台相比);PHP比另外几个最受欢迎的语言执行效率高。如果程序设计中,没有瓶颈的问题,PHP的效率还是很高的。

昨天开发中,遇到PHP中的一个bug。setcookie函数,如下2行的语句:

setcookie('name','123',time()+3600,'/');
setcookie('name','123',time()+3600,'.abc.com');

上述2行的区别,第1行的cookies设置,只对某个二级域名有效,第2行是对该域名的顶级域名下的所有二级域名有效。

比如我在开发中,某个页面是用第1行的方法来设置cookies,然后用第2行来清除cookies。实际不行,无论怎样调试都不行。即如果一个cookies是用第1种方法写入的,则第2种方法不能对这个cookies做任何操作,不能改写、不能清除;反之,如果是用第2种方法写入的,同样不能用第1种方法对其改写、清除。

为什么我一定要用第2种方法来清除第1种的cookies?因为恰好在我编写的面板里,用户可以选择第1种、第2种的方式来保存cookies,当处于切换交界的时候,用户点击“退出”,会无法清除cookies。

昨天用Linux的服务器版PHP 5.X、PHP 7.0测试,这个bug都存在。

为了解决这个问题,经过几个小时的测试,在清除cookies的时候,最后我采用上述2行都同时使用方法,虽然问题是基本解决了,但并非完美解决,在切换交界的时候可能会存在某个二级域名没有清除cookies,这是由于PHP的特殊bug。

这个bug的存在,是因为PHP的设计者未对此开发。

0条评论:

发表评论:
名字: (*必填)
博客: (可省)

正文:

  记住信息?

王志勇:1980-09-26 (44周岁)
程序设计,前端设计。

版权声明:本博客所有文章,均符合原创的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。

与此相关的链接
自由勇专栏

Blog存档 Archives

2022年07月
2022年06月(15)
2022年05月(20)
2022年04月(16)
2022年03月(9)
2022年02月(9)
2022年01月(10)
2021年 +

2020年 +
2019年 +
2018年 +
2016年-2017年(9)
2014年06月-09月(10)
2013年 +
2012年 +
2011年 +
2010年 +
2009年 +
2008年 +
2007年 +
2006年 +
2005年09月(4)

Copyright © 2006-2024 auiou.com All rights reserved.
此Blog程序由王志勇编写