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 相关文章推荐
PHP4 与 MySQL 数据库操作函数详解
Dec 06 PHP
浅析php插件 HTMLPurifier HTML解析器
Jul 01 PHP
将CMYK颜色值和RGB颜色相互转换的PHP代码
Jul 28 PHP
一个经典的PHP验证码类分享
Nov 18 PHP
使用GDB调试PHP代码,解决PHP代码死循环问题
Mar 02 PHP
php给一组指定关键词添加span标签的方法
Mar 31 PHP
php防止网站被攻击的应急代码
Oct 21 PHP
PHP简单日历实现方法
Jul 20 PHP
thinkphp中多表查询中防止数据重复的sql语句(必看)
Sep 22 PHP
laravel-admin的多级联动方法
Sep 30 PHP
php计数排序算法的实现代码(附四个实例代码)
Mar 31 PHP
微信小程序结合ThinkPHP5授权登陆后获取手机号
Nov 23 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
php5数字型字符串加解密代码
2008/04/24 PHP
PHP实现支付宝即时到账功能
2016/12/21 PHP
PHP预定义超全局数组变量小结
2018/08/20 PHP
php使用redis的几种常见操作方式和用法示例
2020/02/20 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
2020/04/04 PHP
javascript之卸载鼠标事件的代码
2007/05/14 Javascript
JS解密入门之凭直觉解
2008/06/25 Javascript
jQuery对Select的操作大集合(收藏)
2013/12/28 Javascript
JS给超链接加确认对话框的方法
2015/02/24 Javascript
javascript模拟命名空间
2015/04/17 Javascript
分享有关jQuery中animate、slide、fade等动画的连续触发、滞后反复执行的bug
2016/01/10 Javascript
JavaScript中解决多浏览器兼容性23个问题的快速解决方法
2016/05/19 Javascript
Summernote实现图片上传功能的简单方法
2016/07/11 Javascript
AngularJS路由实现页面跳转实例
2017/03/03 Javascript
nodejs调取微信收货地址的方法
2017/12/20 NodeJs
JavaScript基础心法 数据类型
2018/03/05 Javascript
vue组件开发之用户无限添加自定义填写表单的方法
2018/08/28 Javascript
微信小程序出现wx.getLocation再次授权问题的解决方法分析
2019/01/16 Javascript
微信小程序云开发如何使用npm安装依赖
2019/05/18 Javascript
富文本编辑器vue2-editor实现全屏功能
2019/05/26 Javascript
python输出当前目录下index.html文件路径的方法
2015/04/28 Python
简单了解什么是神经网络
2017/12/23 Python
python学生管理系统代码实现
2020/04/05 Python
python3.5 email实现发送邮件功能
2018/05/22 Python
解决python中遇到字典里key值为None的情况,取不出来的问题
2018/10/17 Python
基于MATLAB和Python实现MFCC特征参数提取
2019/08/13 Python
使用OpenCV实现仿射变换—旋转功能
2019/08/29 Python
opencv3/C++图像像素操作详解
2019/12/10 Python
python爬虫学习笔记之pyquery模块基本用法详解
2020/04/09 Python
详解python变量与数据类型
2020/08/25 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
2020/10/21 Python
WoolOvers澳洲官方网站:英国针织服装公司
2018/05/13 全球购物
音乐学个人的自荐书范文
2013/11/26 职场文书
党员国庆节演讲稿范文2014
2014/09/21 职场文书
幼儿教师自我剖析材料
2014/09/29 职场文书
教务处干事工作总结
2015/08/14 职场文书