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 相关文章推荐
5.PHP的其他功能
Oct 09 PHP
模仿OSO的论坛(二)
Oct 09 PHP
php自动适应范围的分页代码
Aug 05 PHP
php xml 入门学习资料
Jan 01 PHP
php 备份数据库代码(生成word,excel,json,xml,sql)
Jun 23 PHP
php使用explode()函数将字符串拆分成数组的方法
Feb 17 PHP
php+MySQL实现登录时验证登录名和密码是否正确
May 10 PHP
PHP中读取文件的几个方法总结(推荐)
Jun 03 PHP
THINKPHP在添加数据的时候获取主键id的值方法
Apr 03 PHP
PHP实现的简单排列组合算法应用示例
Jun 20 PHP
Laravel学习教程之IOC容器的介绍与用例
Aug 15 PHP
详解cookie验证的php应用的一种SSO解决办法
Oct 20 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
分享下页面关键字抓取components.arrow.com站点代码
2014/01/30 PHP
不错的asp中显示新闻的功能
2006/10/13 Javascript
javascript div 遮罩层封锁整个页面
2009/07/10 Javascript
修改jQuery Validation里默认的验证方法
2012/02/14 Javascript
Google 地图类型详解及示例代码
2016/08/06 Javascript
Ajax+FormData+javascript实现无刷新表单信息提交
2016/10/24 Javascript
原生javascript实现的ajax异步封装功能示例
2016/11/03 Javascript
JavaScript字符串检索字符的方法
2017/06/23 Javascript
js实现前端图片上传即时预览功能
2017/08/02 Javascript
集成vue到jquery/bootstrap项目的方法
2018/02/10 jQuery
axios 处理 302 状态码的解决方法
2018/04/10 Javascript
JavaScript门道之标准库
2018/05/26 Javascript
JS实现面向对象继承的5种方式分析
2018/07/21 Javascript
jQuery实现根据身份证号获取生日、年龄、性别等信息的方法
2019/01/09 jQuery
微信小程序如何再次获取用户授权的方法
2019/05/10 Javascript
完美解决vue 中多个echarts图表自适应的问题
2020/07/19 Javascript
微信小程序基于高德地图API实现天气组件(动态效果)
2020/10/22 Javascript
Python的Django框架中TEMPLATES项的设置教程
2015/05/29 Python
对numpy中shape的深入理解
2018/06/15 Python
Python日期时间模块datetime详解与Python 日期时间的比较,计算实例代码
2018/09/14 Python
python对于requests的封装方法详解
2019/01/03 Python
Python+OpenCV感兴趣区域ROI提取方法
2019/01/10 Python
pytorch多进程加速及代码优化方法
2019/08/19 Python
Pytorch之卷积层的使用详解
2019/12/31 Python
Python下使用Trackbar实现绘图板
2020/10/27 Python
用sleep间隔进行python反爬虫的实例讲解
2020/11/30 Python
解决pytorch 模型复制的一些问题
2021/03/03 Python
纯CSS3实现圆角效果(含IE兼容解决方法)
2014/05/07 HTML / CSS
美国儿童运动鞋和服装零售商:Kids Foot Locker
2017/08/05 全球购物
汽车销售求职自荐信
2013/10/01 职场文书
校庆活动方案
2014/03/31 职场文书
小班上学期个人总结
2015/02/12 职场文书
2016春节慰问信范文
2015/03/25 职场文书
房屋买卖定金协议书
2016/03/21 职场文书
Android开发手册自定义Switch开关按钮控件
2022/06/10 Java/Android
一文了解Java动态代理的原理及实现
2022/07/07 Java/Android