【PHP】一个setcookie的bug整死我了
2017-08-08 15:04
549 查看
1、做项目遇到一个问题就是setcookie始终没法生效。怎么找都找不到原因。
网上有很多例子,说是 在setcookie之前不能有输出。检查了下确实没有输出。具体例子如下所示。
上面的例子,第1个setcookie有返回结果,结果是1。
但是第2个例子,setcookie就是没有结果,简直是。显然$pub = new PubAuc();这里出了问题,导致了异常。
对,然后,我用了一个极端的方式调试,将PubAuc类里的内容全部删除了只保留了如下定义,结果还是不行。这就奇怪了。
既然代码内容一样,这到底是哪里出现问题了呢。
最后我在Beyond Compare上对比了下,发现两个文件有微小的差别。如下所示。
两个文件的差别,在于正常的没有 字节序标记,而不正常的有。所以赶紧上网查查这个到底是为啥。
PHP中utf-8编码格式之BOM引发的问题
二、对于此类问题,我们如何解决。
2.1、在windows\phpstorm上编写代码时保持良好的习惯。始终设置文件的格式为 LF\UTF-8的格式。
2.2、可以使用脚本对于上传到服务器的php代码文件,进行检查,如果遇到有字节序标记的文件,全部使用工具进行转码。
2.3、如果你们的项目组有使用Beyond Compare工具,使用该工具,就可以直接打开看到一个文件的编码,以及该文件是否有
字节序标记。
检查脚本链接:http://pan.baidu.com/s/1b5PHRC 密码:ts5o
网上有很多例子,说是 在setcookie之前不能有输出。检查了下确实没有输出。具体例子如下所示。
$res = setcookie('AUCSESSION308', '1234', 0, '/'); PubFileLog::writeDebugInfo('res4:'.$res); $pub = new PubAuc(); $res = setcookie('AUCSESSION309', '1234', 0, '/'); var_dump($res); PubFileLog::writeDebugInfo('res5:'.$res);
上面的例子,第1个setcookie有返回结果,结果是1。
但是第2个例子,setcookie就是没有结果,简直是。显然$pub = new PubAuc();这里出了问题,导致了异常。
对,然后,我用了一个极端的方式调试,将PubAuc类里的内容全部删除了只保留了如下定义,结果还是不行。这就奇怪了。
<? class PubAuc { }然后在PubAuc.php同级目录下另外有个文件PubReCode.php。里面有个类是PubReCode。。我将上面的代码改为:
$res = setcookie('AUCSESSION308', '1234', 0, '/'); PubFileLog::writeDebugInfo('res4:'.$res); $pub = new PubReCode(); $res = setcookie('AUCSESSION309', '1234', 0, '/'); var_dump($res); PubFileLog::writeDebugInfo('res5:'.$res);这样又可以了。然后我把PubReCode里的类定义改为 空的类,也是可以的。
既然代码内容一样,这到底是哪里出现问题了呢。
最后我在Beyond Compare上对比了下,发现两个文件有微小的差别。如下所示。
两个文件的差别,在于正常的没有 字节序标记,而不正常的有。所以赶紧上网查查这个到底是为啥。
PHP中utf-8编码格式之BOM引发的问题
二、对于此类问题,我们如何解决。
2.1、在windows\phpstorm上编写代码时保持良好的习惯。始终设置文件的格式为 LF\UTF-8的格式。
2.2、可以使用脚本对于上传到服务器的php代码文件,进行检查,如果遇到有字节序标记的文件,全部使用工具进行转码。
2.3、如果你们的项目组有使用Beyond Compare工具,使用该工具,就可以直接打开看到一个文件的编码,以及该文件是否有
字节序标记。
检查脚本链接:http://pan.baidu.com/s/1b5PHRC 密码:ts5o
相关文章推荐
- PHP Reflection Extension的一个bug
- php中自定义界定符的一个未明的BUG
- 一个PHP的Bug?
- php中关于session的一个bug
- php中iconv函数的一个小bug--转载
- ddcms的一个bug(php版本不兼容问题)
- php7下的opcache特性导致的一个bug排查
- Delphi for Php的一个小Bug
- php thinkphp的一个小BUG
- PHP环境时区设置成Asia/Chongqing导致的一个bug
- 学习注水-20161113-php-imap收取邮件知识点mark一下「待解一个已知的bug」
- PHP中解压缩的一个BUG
- cakephp2.3.0 lib中的Model.php有一个bug
- 哎,有一个教训,php不能setcookie?
- phpexcel移植到sae上的一个致命bug的解决的办法
- php 获取上上个月数据 使用 strtotime('-1 months')的一个bug
- php中post键值过多引起的一个bug
- PHP - Manual手册 - CII. Network Functions网络函数 - setcookie发送一个cookie
- windows 下 nginx + php 的一个Bug
- php一个有意思的bug