首页 > 语言 > 关键词 > php最新资讯 > 正文

彻底杜绝PHP的session cookie错误

2009-05-19 09:55 · 稿源:月光博客

本文讨论的是如何彻底杜绝warning: Cannot add header information - headers already sent in......  这种令人莫明其妙的的错误

只要你写过PHP代码,相信都遇上过这个大多时候都令人莫明其妙的warning吧..今天我们就来搞定它...............

看了PHP手册,回答如下:

消息“Warning: Cannot send session cookie - headers already sent。。。”或者“Cannot add header information - headers already sent。。。”。

函数 header(),setcookie() 和 session 函数需要在输出流中增加头信息。但是头信息只能在其它任何输出内容之前发送。在使用这些函数前不能有任何(如 HTML)的输出。函数 headers_sent() 能够检查您的脚本是否已经发送了头信息。请参阅“输出控制函数”。

意思是:不要在使用上面的函数前有任何文字,空行,回车,空格等。但。。。问题是,这答案并不令人满意。因为往往程序在其他PHP环境下运行却正常。
 

首先:这错误是怎么产生的呢?让我们来看看PHP是如何处理HTTP header输出和主体输出的。

PHP脚本开始执行时,它可以同时发送header(标题)信息和主体信息。 Header信息(来自 header() 或 SetCookie() 函数)并不会立即发送,相反,它被保存到一个列表中。 这样就可以允许你修改标题信息,包括缺省的标题(例如 Content-Type 标题)。但是,一旦脚本发送了任何非标题的输出(例如,使用 HTML 或 print() 调用),那么PHP就必须先发送完所有的Header,然后终止 HTTP header。而后继续发送主体数据。从这时开始,任何添加或修改Header信息的试图都是不允许的,并会发送上述的错误消息之一。

好!那我们来解决它:

笨方法:把错误警告全不显示!
掩耳盗铃之计,具体方法就不说了 ^_^#

解决方案:

1)适用于有权限编辑PHP。INI的人

打开php。ini文件(你应试比我清楚你的php。ini在哪里),找到

output_buffering =改为on或者任何数字。如果是IIS6,请一定改为ON,不然你的PHP效率会奇慢。

2)使用虚拟主机,不能编辑PHP。INI,怎么办?

简单:

在你的空间根目录下建立一个。htaccess文件,内容如下:

AllowOverride All
PHP_FLAG output_buffering On

不幸的情况是:还是不行?全部网页都不能显示啦?

那么,你可以打电话骂一通空间商,然后让他给你把apache的。htaccess AllowOverride打开

3)在PHP文件里解决

ob_start()
启用output buffering机制。 Output buffering支持多层次 -- 例如,可以多次调用 ob_start() 函数。

ob_end_flush()
发送output buffer(输出缓冲)并禁用output buffering机制。

ob_end_clean()
清除output buffer但不发送,并禁用output buffering。

ob_get_contents()
将当前的output buffer返回成一个字符串。允许你处理脚本发出的任何输出。

原理:

output_buffering被启用时,在脚本发送输出时,PHP并不发送HTTP header。相反,它将此输出通过管道(pipe)输入到动态增加的缓存中(只能在PHP 4。0中使用,它具有中央化的输出机制)。你仍然可以修改/添加header,或者设置cookie,因为header实际上并没有发送。当全部脚本终止时,PHP将自动发送HTTP header到浏览器,然后再发送输出缓冲中的内容。

本文链接地址:http://www.williamlong.info/archives/171.html

  • 相关推荐
  • 大家在看
  • 用php源码搭建二维码加密支付平台

    今天给大家介绍的项目-"用php源码搭建二维码加密支付平台",可以说,有一定的技术门槛,有一定的壁垒,因为需要搭建网站并且运营。正是因为有一定的门槛,需要学习和准备一些东西,才能挡住大多数用户的进入,才能长久的赚取利润。这些技术门槛,和需要准备的一些东西,我今天会详细的,手把手的教大家,如果你肯学习,并且有一定的网络基础,我相信可以很快突破难点,搭建成功。一旦搭建成功,运用一些推广的手段,后期

  • 华为云FusionAccess连续四年中国桌面云市场第一

    IDC最新研究数据显示,华为云FusionAccess桌面云一马当先,又一次斩获中国桌面云市场第一。这已经是自该报告2016年发布以来,华为连续第四年领跑中国桌面云市场,显示了客户对华为在桌面云市场多年来持续投入的认可。 IDC数据显示,华为不仅继续在其耕耘多年的政府市场持续领先,并且在金融、制造、能源等更多的行业也越来越受欢迎。同时期待FusionAccess基于华为鲲鹏生态会有更加优异的表现。 2020年,华为云FusionAccess针对日?

  • 翼龙贷:杜绝暴力催收,做好借贷风险措施

    在这个充满快节奏,讲究效率,追求完美与和平的时代,我们所做的每一样事都要做到尽善尽美,和平处理。催收也是一样的,我们不能通过暴力催收这种违法行为来达到我们的目的。据翼龙贷了解发生暴力催收事件的大多是个人债务纠纷,而主要是民间借贷做的风险措施不够完善。日常生活中,民间借贷利息往往比银行存款利息高,很多债权人借钱也是为了获取更高的收益。但收益与风险息息相关,借贷本身就是一种市场经济行为,蕴含了交易中的

  • 唯一坚持MLC闪存!三星980 PRO PCIe 4.0 SSD韩国过审

    PCIe 4.0 SSD已经多如牛毛,但说到闪存,清一色都是TLC,而很多人念念不忘的MLC已经几乎绝迹。如果你实在需要MLC,可以等等三星980 PRO,因为它是如今几乎唯一硕果仅存的消费级MLC SSD。三星9

  • 一文读懂offer发放注意事项,规范管理杜绝风险

    前几天看见一个HR吐槽,说是好不容易招了个人,领导见了,offer也发了,本以为万事大吉,刚准备喝杯茶,缓口气。结果!过了两天,那个部门领导说,现在有一个更适合的,不想要那个人了!而且!候选人也每天在催,想早点入职!要知道,有多少的HR是栽在“发offer”这个坑里的!一不留神就里外不是人,在内受委屈,在外又背锅,满腹心酸事,两眼泪涟涟。那么,发放offer,HR怎样才能机智避坑,做到无风险发放呢?我们首先了解下什么是offer

  • 为iPhone 12上市做准备 台积电月底前投产A14 Bionic芯片

    综合当前比较可靠的消息,今年秋季苹果的年度旗舰iPhone 12系列将依旧提供iPhone 12、iPhone 12Max和iPhone 12 Pro、iPhone 12 Pro Max两个版本共四款机型。如今6月也接近尾声,距离iPhone 12系列旗舰的亮相又更近了一步。现在有最新消息,近日有媒体透露称,该机所要搭载的全新5nm A14芯片即将于本月底开始量产。据中国台湾媒体ePrice最新发布的消息显示,台积电预计在本月底之前开始量产iPhone 12系列所将首发搭载的?

  • playstation:请尽情享受以《刀剑神域:Alicization》为舞台的《UW》世界

    预定于 7 月 9 日(星期四)发售的“刀剑神域”游戏系列最新作、即将登陆PlayStation? 4 平台的“SWORD ART ONLINE Alicization Lycoris”游戏,是一款以原作和动画中看到的虚拟世界“Under World”为舞台,通过操作Kirito(桐人)在《Alicization》篇的世界中冒险的RPG游戏。故事再现了TV动画《Alicization》篇中前半战、从前半战最终话到游戏原创路线的分歧这一部分剧情。值得一提的是,该作故事内容不是原有的《Alicization》的

  • 罕见MLC闪存!三星980 PRO PCIe 4.0 SSD两个月内见

    无论是在消费级市场,还是数据中心领域,PCIe 4.0 SSD产品都已经相当丰富,而作为SSD界杠把子的三星电子,早在年初CES 2020上就展示了自己的首款消费级PCIe 4.0 SSD 980 PRO,半年过去了却迟迟没

  • 爆料者:iPhone 12 Pro/Pro Max将配备120Hz ProMtion显示屏

    【TechWeb】6月28日消息,据国外媒体报道,一位爆料者称,iPhone 12 Pro和iPhone Pro Max将配备120Hz刷新率的ProMtion显示屏。此前,外媒报道称,今年的新款iPhone(iPhone 12)共有4款:一款为5.4英寸,两款为6.1英寸,一款为6.7英寸。这四款iPhone均配备OLED(有机发光二极管)面板。目前,iPhone的最大刷新率为60Hz。早在去年10月份,就有报道称,苹果今年将发布一款配备120Hz刷新率屏幕的iPhone。此外,国外知名爆料人此前也?

  • 消息称苹果正在对iPhone测试:让其有运行MacOS可能性

    今年WWDC开发者大会上,苹果用实际行动向外界证明,他们正在做桌面、移动的大一统,而这需要硬件去支持,所以才有了ARM版的桌面处理器。据外媒最新报道称,苹果正在研发原型机,在iPhone上运行

  • 快手小店商品类目错误是什么意思

    快手小店中很多朋友会遇到上传商品的时候显示商品类目错误,一些人还不明白这个到底是什么意思,下面就来为大家详细大家解释一下。

  • 抵制破解!索尼上线全新的PlayStation BUG悬赏计划

    游戏主机一直是黑客破解的重点,包括任天堂Switch和索尼PS4在内的现世代几大游戏主机,均不同程度上的遭遇了破解。索尼全新一代游戏主机PlayStation 5已经确定将于今年圣诞假期期间正式发布,为了不再重蹈此前的覆辙,索尼今日正式上线了新的PlayStation BUG悬赏计划,如果有开发者或者用户发现了PS系统以及线上服务的重大安全漏洞,索尼将会提供5万美元的现金奖励。据悉,索尼目前已经向发现PS漏洞的黑客

  • 《Valorant》特战英豪提示错误代码43解决方法

    《Valorant》特战英豪是拳头旗下的 FPS 新游,游戏现在已经上线公测,许多玩家在下载游戏后打开的时候遇到了提示错误代码 43 的问题,接下来为大家带来解决的方法。

  • 无畏契约Valorant登录失败各类错误代码解决办法

    无畏契约Valorant很多玩家都选择外服来玩,必然会遇到很多登录问题,特别是会出现各种错误代码,那么遇到了这些错误代码应该怎么解决呢?下面就来为大家详细的介绍一下。

  • Xbox Series X主机“底盘”首度示人:巨大的橡胶垫圈

    Xbox Series X主机的正面、侧面、背面都大方公布了,可似乎还没人看过底部?Up主Brad Sams首度公开了XSX主机的“底盘”,可以看到巨大的橡胶垫圈。显然,微软此举是想垫高主机,加强

  • 华为HMS Core自有COVID-19联系人追踪API曝光

    ​谷歌和苹果已经发布了 COVID-19 联系人追踪 API,但依然有数百万不使用 Google Play Services 的用户无法参与该计划,其中就包括国内手机厂商华为。援引外媒 XDA-Developers 报道,华为在对 HMS Core 的更新中引入了自家的联系人追踪 API。

  • Serverless架构的前世今生

    一、Serverless简介云计算的不断发展,涌现出很多改变传统IT架构和运维方式的新技术,而以虚拟机、容器、微服务为代表的技术更是在各个层面不断提升云服务的技术能力,它们将应用和环境中很多通用能力变成了一种服务。但无论这些技术应用在哪里,帮助企业“降本增效”是技术变革永恒的主题。Serverless架构的出现,带来了跨越式的变革。Serverless下主机管理、操作系统管理、基础软件的部署运维、资源分配和扩缩容能力全部由云厂?

  • Kionix三轴加速度传感器的高级数据路径功能简介

    1.前言本应用指南旨在帮助开发者了解罗姆集团旗下Kionix公司的KX13x系列三轴加速度传感器搭载的独有功能——高级数据路径(Advanced Data Path,ADP)。ADP由用户可定制的频率滤波器和一个均方根(RMS)计算器组成,后者是提供所需带宽内的加速度振幅。X、Y和Z轴的 16 位ADP输出可以从专用输出寄存器中读取,存储在 512 字节的FIFO缓存中,然后被路由至Wake-Up(唤醒)和Back-to-Sleep(返回睡眠)引擎。通过设置想要的阈值振幅和计数器值?

  • 和平精英SS8赛季手册寻宝行动全攻略 SS8赛季手册寻宝行动教程

    ​和平精英SS8赛季手册寻宝行动是新增的玩法,在其中可以获得非常多的奖励,但是一些玩家还不清楚怎么去玩寻宝行动,下面就来为大家分享一下和平精英SS8赛季手册寻宝行动全攻略。

  • 新兴黑马资本Block Vision Capital助力区块链生态建设

    Block Vision Capital区块愿景基金是一家于 2020 年初成立的新兴资本,专注于区块链资本市场的数字资产投资管理基金,是中国新兴的加密数字货币对冲基金和风险投资基金之一,致力于投资并帮助区块链行业中极具潜力与发展前景的企业,并间接完善区块链行业的基础设施与生态环境。高投资回报率惹圈内关注作为一家新兴的资本机构,Block Vision Capital区块愿景基金投资领域涉及数字资产服务平台、区块链投资孵化机构、区块链技术项目

  • 参与评论
文明上网理性发言,请遵守新闻评论服务协议