虽然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条评论: