近期做一个网站的投票时,遇到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是国产框架。ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。

本篇文章给大家带来了关于thinkphp的相关知识,其中主要介绍了关于使用think-queue来实现普通队列和延迟队列的相关内容,think-queue是thinkphp官方提供的一个消息队列服务,下面一起来看一下,希望对大家有帮助。

thinkphp基于的mvc分别是指:1、m是model的缩写,表示模型,用于数据处理;2、v是view的缩写,表示视图,由View类和模板文件组成;3、c是controller的缩写,表示控制器,用于逻辑处理。mvc设计模式是一种编程思想,是一种将应用程序的逻辑层和表现层进行分离的方法。

本篇文章给大家带来了关于thinkphp的相关知识,其中主要介绍了使用jwt认证的问题,下面一起来看一下,希望对大家有帮助。

thinkphp扩展有:1、think-migration,是一种数据库迁移工具;2、think-orm,是一种ORM类库扩展;3、think-oracle,是一种Oracle驱动扩展;4、think-mongo,一种MongoDb扩展;5、think-soar,一种SQL语句优化扩展;6、porter,一种数据库管理工具;7、tp-jwt-auth,一个jwt身份验证扩展包。

本篇文章给大家带来了关于ThinkPHP的相关知识,其中主要整理了使用think-queue实现redis消息队列的相关问题,下面一起来看一下,希望对大家有帮助。

thinkphp查询库是否存在的方法:1、打开相应的tp文件;2、通过“ $isTable=db()->query('SHOW TABLES LIKE '."'".$data['table_name']."'");if($isTable){...}else{...}”方式验证表是否存在即可。

在thinkphp3.2中,可以利用define关闭调试模式,该标签用于变量和常量的定义,将入口文件中定义调试模式设为FALSE即可,语法为“define('APP_DEBUG', false);”;开启调试模式将参数值设置为true即可。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

SublimeText3 Linux新版
SublimeText3 Linux最新版

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

Atom编辑器mac版下载
最流行的的开源编辑器

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),