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

本文探讨了PHP编程中setcookie函数在处理二级域名cookie时的一个常见问题。作者指出,使用setcookie设置不同路径的cookie会导致在特定情况下无法清除或修改已设置的cookie。在PHP5和PHP7.0环境下,这个问题依然存在。解决方案是同时使用两种路径设置来清除cookie,但这并不完美,可能导致某些二级域名清理不彻底。此问题源于PHP设计的一个未涵盖的特殊情况。
摘要由CSDN通过智能技术生成

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值