PHP程序无法设置cookie
2011-02-23 15:43
253 查看
1 PHP程序在执行setcookie之前有输出。
解决 :
把setcookie之前的程序检查一下,是否在PHP代码<?php 之前有回车或者空格。
或者:
在程序的最开头执行一次 ob_start();
2 PHP cookie生命太短,还未生效就已死亡
此项问题的查看可以在PHP程序中执行 time();看看服务器时间与本地时间差是否超过生存时间
解决 :修改服务器时间或增长cookie生命。
3 PHP cookie作用域不对
先把cookie的作用域设置成 / ,看是否有问题。如果问题解决,再设置成正确的作用域
4 用户禁止使用cookie
这个不是程序的错了。不过可以使用带参数url传递cookie的值或者session来解决。
5 其他问题
6 感谢三楼的fjytzh 的补充,这种情况多出在比较老点的程序中。这种效果相当于register_global=on.
好多程序(例如:论坛)都有把 $_COOKIE , $_GET , $_POST 的值 extract 出来
然后 再 $_COOKIE ,$_GET , $_POST 等值 unset 掉.
这种事情比较水,我也没有预防的办法。只有在开发的时候注意。
当然后面用$_COOKIE['XXXX']访问就访问不到咯
7 最白痴的问题
cookie值为空,这个怎么做就不用我说了吧
在PHP代码<?php 之前有回车....
这点我之前没有注意过...
还有个挺白痴的问题
好多程序(例如:论坛)都有把 $_COOKIE , $_GET , $_POST 的值 extract 出来
然后 再 $_COOKIE ,$_GET , $_POST 等值 unset 掉
当然后面用$_COOKIE['XXXX']访问就访问不到咯
这适合用修改其他完整的系统的情况。
解决 :
把setcookie之前的程序检查一下,是否在PHP代码<?php 之前有回车或者空格。
或者:
在程序的最开头执行一次 ob_start();
2 PHP cookie生命太短,还未生效就已死亡
此项问题的查看可以在PHP程序中执行 time();看看服务器时间与本地时间差是否超过生存时间
解决 :修改服务器时间或增长cookie生命。
3 PHP cookie作用域不对
先把cookie的作用域设置成 / ,看是否有问题。如果问题解决,再设置成正确的作用域
4 用户禁止使用cookie
这个不是程序的错了。不过可以使用带参数url传递cookie的值或者session来解决。
5 其他问题
6 感谢三楼的fjytzh 的补充,这种情况多出在比较老点的程序中。这种效果相当于register_global=on.
好多程序(例如:论坛)都有把 $_COOKIE , $_GET , $_POST 的值 extract 出来
然后 再 $_COOKIE ,$_GET , $_POST 等值 unset 掉.
这种事情比较水,我也没有预防的办法。只有在开发的时候注意。
当然后面用$_COOKIE['XXXX']访问就访问不到咯
7 最白痴的问题
cookie值为空,这个怎么做就不用我说了吧
在PHP代码<?php 之前有回车....
这点我之前没有注意过...
还有个挺白痴的问题
好多程序(例如:论坛)都有把 $_COOKIE , $_GET , $_POST 的值 extract 出来
然后 再 $_COOKIE ,$_GET , $_POST 等值 unset 掉
当然后面用$_COOKIE['XXXX']访问就访问不到咯
这适合用修改其他完整的系统的情况。
相关文章推荐
- PHP如何清除COOKIE?PHP无法删除COOKIE?设置COOKIE有效期、COOKIE过期
- php 在ie中无法设置cookie的值
- PHP 如何清除COOKIE? PHP无法删除COOKIE?设置COOKIE有效期
- IE无法设置短域名下Cookie
- JS读取PHP中设置的中文cookie时出现乱码的解决方法
- 301重定向设置及程序代码实现全集(ASP|.NET|PHP|JSP)
- 在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接)[转]
- php在同一个页面设置cookie然后读cookie为什么是Undefined
- PHP设置COOKIE的HttpOnly属性
- SELinux让php程序无法远程连接数据库
- PHP中设置、使用、删除Cookie方法
- SELinux导致无法访问外网,PHP连接MySQL异常Can't connect to MySQL server、redis程序访问提示Redis server went away的解决方法
- php设置cookie,在js中如何获取
- 全新PHP Cookie设置方法揭秘
- Java环境变量设置后,编写第一个程序报错:找不到或无法加载主类 D:\java\HelloWorld
- go 代理服务器(cookie设置失败无法登录),nginx设置Domain
- 在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接
- php 时区设置相差8小时间程序与php.ini配置方法
- php设置cookie和session报错,Cannot modify header information
- 巨坑的[INS-30131]执行安装程序验证所需的初始设置失败(原因:无法访问临时位置)