PHP header() session_start() 函数前不能有输出,为什么?

前阵面试遇到的问题,当时没答上来,后来查了些资料,仍未得到答案。今天研究HTTP请求,终于知道了答案。

  • HTTP 函数允许在其他输出被发送之前,对由 Web 服务器发送到浏览器的信息进行操作。

  • HTTP请求和HTTP响应都有消息报头。而消息报头是由众多报头域组成。

也就是设置请求的消息报头,再发送;若之前有输出,就先以默认请求发送了,消息报头已确定,后面的设置就失效。

参考:PHP HTTP函数 HTTP协议详解(五、消息报头)

粗略认识,如有错误请指正。

时间: 2024-10-12 09:42:24

PHP header() session_start() 函数前不能有输出,为什么?的相关文章

php的header()函数前有echo输出情况分析

php的header()方法一般被用来告知浏览器做一些什么样的操作,比如跳转,刷新等等:而调用header方法前,如果使用echo输出一些内容,会发生什么情况呢?会对header函数有影响吗?我们实验来看看情况. 第一部分: 选择环境和版本 我们的测试选择的是LNNP,php的版本是5.3.8,相对较老的版本 第二部分:测试用例 <?php $str = "qwertyuiopasdfghjklzxcvbnm1234567890~!@#$%^&*()_+"; $time

PHP函数前面的@。

@是可以屏蔽函数执行过程中遇到问题而产生的一些错误.警告信息,这样用户就看不到程序的出错信息.这样除了用户界面会友好一些外,更重要的是安全性,因为屏蔽了出错文件的路径等信息. 比如说这个: for($i = 0;$i<$to;$i++){ $result = fsockopen($target, $i, $errno, $errstr, 1); if(!$result) echo "Port $i Closed...".'<br>'; else "Socke

VS2010中wmain入口函数中使用wprintf输出中文乱码问题

生活中的单例 中国(China),位于东亚,是一个以华夏文明为主体.中华文化为基础,以汉族为主要民族的统一多民族国家,通用汉语.中国疆域内的各个民族统称为中华民族,龙是中华民族的象征.古老的中国凭借自身的发展依旧美丽的屹立于东方民族之林,闪耀着她动人的光彩,世界上只有一个中国,任何部分都是祖国不可分割的一部分,今天我们的设计模式就从伟大的祖国开始说起---单例模式. 详解单例模式 单例模式是什么?跟我们的祖国有着怎样的关系呢?首先我们来看一下单例,从"单例"字面意思上理解为-一个类只有

php中函数前加&amp;符号的作用分解

这篇文章主要介绍了php中的函数前加&符号的作用分解,其作用叫做引用返回,有点抽象,详细解释请看本文内容,需要的朋友可以参考下  (转载) php变量前面加&符号是什么意思就不用多说了,大家都在用,就是两个变量同时指向一个地址而已,那么,php函数前面加&符号的意义又是什么呢?下面先上两个演示代码,然后再做解释. function &chhua() { static $b = "www.jb51.net"; //申明一个静态变量 $b = $b . &q

[Reprint]C++函数前和函数后加const修饰符区别

c++中关于const的用法有很多,const既可以修饰变量,也可以函数,不同的环境下,是有不同的含义.今天来讲讲const加在函数前和函数后面的区别.比如: 01 #include<iostream> 02   03 using namespace std; 04   05 // Ahthor:  过往记忆 06 // E-mail:  [email protected] 07 // Blog:    http://www.iteblog.com 08 // 转载请注明出处 09   10

vs2015如何设置类或函数前不显示引用的数量

这几天,从vs2012换成vs2015,感觉15版本增加了一个类或函数前提示引用的数量,这个感觉很别扭,如何取消显示这个呢? 问题如下: 取消显示这个引用的步骤: 找到菜单栏: 工具 ---> 选项  ---> 文本编辑器 ---> 所有语言 ---> CodeLens 设置取消启用CodeLens,并保存就可以了 设置后结果如下:

怎样使代码在main函数前执行,怎样使代码在main函数之后执行

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 网上有说可以用 __attribute__ ((constructor)) 来让函数在main函数之前执行, __attribute__ ((destructor)) 来让函数在main函数之后执行. 比如说像下面这样声明函数 void before(void) __attribute__ ((constructor)); void after(void) __attribute__ ((

C++ 成员函数前和函数后加const修饰符区别

博客转载自: https://www.iteblog.com/archives/214.html 分析以下一段程序,阐述成员函数后缀const 和 成员函数前const 的作用 #include<iostream> using namespace std; class TestClass { public: size_t length() const; const char* getPContent(); void setLengthValid(bool isLengthValid); pri

从零开始学Go之基本(二):包、函数声明与格式化输出

包: 每个go程序在开头都要有一个package来声明当前包 其中包含main函数的包必须为main包来声明入口 从零开始学Go之基本(二):包.函数声明与格式化输出 导入包: import 包名称 //import "fmt" 单个导入 import ( "fmt" "math" ) 引用其他包时必须通过import来获取,根据包中的变量或者函数的开头大小写来判断能否导出:大写才能导出,否则不能被外部包引用 函数声明: func 函数名 (函数