找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 137|回复: 0
打印 上一主题 下一主题

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

[复制链接]

2536

主题

2536

帖子

7532

积分

论坛元老

Rank: 8Rank: 8

积分
7532
跳转到指定楼层
楼主
发表于 2018-2-14 05:56:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            近期做一个网站的投票时,遇到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后面跟的那个文件,最后发现第一行是空白的。
            
            
您可能感兴趣的文章:
  • ThinkPHP的模版中调用session数据的方法
  • ThinkPHP框架实现session跨域问题的解决方法
  • ThinkPHP关于session的操作方法汇总
  • ThinkPHP实现将SESSION存入MYSQL的方法
  • 如何让thinkphp在模型中自动完成session赋值小教程
  • thinkphp在模型中自动完成session赋值示例代码
  • ThinkPHP中Session用法详解
  • thinkphp中session和cookie无效的解决方法
  • ThinkPHP自定义Redis处理SESSION的实现方法
  • thinkphp3.x中session方法的用法分析
  • thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
  • ThinkPHP中session函数详解
  • thinkPHP中session()方法用法详解
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端