ThinkPHP的cookie和session冲突造成Cookie不能使用的解决方法


Posted in PHP onJuly 01, 2014

近期做一个网站的投票时,遇到ThinkPHP中的cookie和session冲突导致Cookie不能使用的情况。

该网站采用的是ThinkPHP框架制作,有一页面上面展示很多图片,要求每个图片下面有对应的投票,通过限制ip地址来,限制游客在一定时间范围内,能对多个图片投票,但是每个图片只能投票一次,开始使用ip存储在数据库解决,后来改进为使用session存储,ip在服务文件里,不过要把生成的sessionid存储在本地的cookie中,按照ThinkPHP手册说明操作session一切顺利,但是在生成cookie之后,却在本地电脑中找不到cookie文本,原本以为是本地电脑限制cookie的生成,可是查看和测试的结果是没有限制,于是自己又单独建立了一个php文件,测试生成cookie,没问题,在本地找到了cookie文本,于是在网上查找到如下内容。顺序解决了问题,使用setcookie()函数设置cookie,得到了想要的结果。

解决办法如下:

找到php.ini 这个配置文件,然后查找一项:output_buffering将其值由原来的off改为on,重新启动Apache就ok了。

另外还有很多相似的问题:

有些时候会发现原在本地运行没有问题的文件,在服务器上测试时,竟然提示本地没有出现的错误: Warning: Cannot modify header information - headers already sent by…

这样的语句,很显然,造成这个原因是因为setcookie造成的,查了一下网上,有如下的解释: cookie本身在使用上有一些限制,例如:

1.呼叫setcookie的叙述必须放在标签之前

2.呼叫setcookie之前,不可使用echo

3.直到网页被重新载入後,cookie才会在程序中出现

4.setcookie函数必须在任何资料输出至浏览器前,就先送出

基於上面这些限制,所以执行setcookie()函数时,常会碰到“Undefined index”、“Cannot modify header information - headers already sent by”…等问题,解决“Cannot modify header information - headers already sent by”这个错误的方法是在产生cookie前,先延缓资料输出至浏览器,因此,您可以在程序的最前方加上ob_start()这个函数。这样问题就可以解决了。 但是如果要加上ob_start()的话,有不大可行,程序都写完了,才来改这个似乎有点郁闷!发现提示这个错误的时候,我就在想我本地怎么没提示这个问题呢,还以为是PHP.ini配置不一样,想想又不对,都是差不多的。于是看看后面跟的那句“output started at…”意思是在setcookie之前已经在另一处有输出了,于是找到output started at后面跟的那个文件,最后发现第一行是空白的。

PHP 相关文章推荐
PHP中Date获取时间不正确怎么办
Jun 05 PHP
php intval的测试代码发现问题
Jul 27 PHP
php 函数中使用static的说明
Jun 01 PHP
php实例分享之通过递归实现删除目录下的所有文件详解
May 15 PHP
Laravel框架学习笔记(二)项目实战之模型(Models)
Oct 15 PHP
9个比较实用的php代码片段
Mar 15 PHP
PHP编写登录验证码功能 附调用方法
May 19 PHP
ThinkPHP实现更新数据实例详解(demo)
Jun 29 PHP
php使用get_class_methods()函数获取分类的方法
Jul 20 PHP
Zend Framework入门教程之Zend_Db数据库操作详解
Dec 08 PHP
关于ThinkPHP中的异常处理详解
May 11 PHP
PHP filter_var() 函数, 验证判断EMAIL,URL等
Mar 09 PHP
ThinkPHP模板中判断volist循环的最后一条记录的验证方法
Jul 01 #PHP
PHP计算一年多少个星期和每周的开始和结束日期
Jul 01 #PHP
PHPMailer发送HTML内容、带附件的邮件实例
Jul 01 #PHP
PHP远程采集图片详细教程
Jul 01 #PHP
PHP实现的汉字拼音转换和公历农历转换类及使用示例
Jul 01 #PHP
PHP和javascript常用正则表达式及用法实例
Jul 01 #PHP
PHP生成二维码的两个方法和实例
Jul 01 #PHP
You might like
PHP错误抑制符(@)导致引用传参失败Bug的分析
2011/05/02 PHP
比file_get_contents稳定的curl_get_contents分享
2012/01/11 PHP
Uncaught exception com_exception with message Failed to create COM object
2012/01/11 PHP
PHP合并数组函数array_merge用法分析
2017/02/17 PHP
字符串的replace方法应用浅析
2011/12/06 Javascript
window.location.reload()方法刷新页面弹出要再次显示该网页对话框
2013/04/24 Javascript
扩展IE中一些不兼容的方法如contains、startWith等等
2014/01/09 Javascript
Angular2下使用pdf插件的方法详解
2017/04/29 Javascript
JavaScript代码判断输入的字符串是否含有特殊字符和表情代码实例
2017/08/17 Javascript
深入浅出webpack之externals的使用
2017/12/04 Javascript
微信小程序实现循环动画效果
2018/07/16 Javascript
jQuery 操作 HTML 元素和属性的方法
2018/11/12 jQuery
微信小程序解除10个请求并发限制
2018/12/18 Javascript
了解JavaScript中的选择器
2019/05/24 Javascript
你不可不知的Vue.js列表渲染详解
2019/10/01 Javascript
node.js实现简单的压缩/解压缩功能示例
2019/11/05 Javascript
[42:25]EG vs Spirit Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
python利用datetime模块计算时间差
2015/08/04 Python
实例讲解Python的函数闭包使用中应注意的问题
2016/06/20 Python
python获取网页中所有图片并筛选指定分辨率的方法
2018/03/31 Python
Python 元类实例解析
2018/04/04 Python
Python简易版图书管理系统
2019/08/12 Python
python动态视频下载器的实现方法
2019/09/16 Python
python3 webp转gif格式的实现示例
2019/12/10 Python
使用keras实现BiLSTM+CNN+CRF文字标记NER
2020/06/29 Python
CSS3中引入多种自定义字体font-face
2020/06/12 HTML / CSS
Ellos瑞典官网:北欧地区时尚、美容和住宅领域领先的电子商务网站
2019/11/21 全球购物
工业设计专业推荐信
2013/10/29 职场文书
公司寄语大全
2014/04/10 职场文书
家长对老师的评语
2014/04/18 职场文书
结对共建协议书
2014/08/20 职场文书
群众路线查摆问题整改措施思想汇报
2014/10/10 职场文书
幼儿园园长个人总结
2015/03/02 职场文书
2015年医院护理部工作总结
2015/04/23 职场文书
2016春季运动会通讯稿
2015/07/18 职场文书
pytorch查看网络参数显存占用量等操作
2021/05/12 Python