[单选题]那个函数可以检查HTTP头是否已经发送或者发送到哪儿?

  1. headers_sent()

  2. http_response_code()

  3. sent()

  4. header()

定义和用法

headers_sent() 函数检查 HTTP 标头是否已被发送以及在哪里被发送。

如果报头已发送,则返回 true,否则返回 false。

语法

headers_sent(file,line)
参数 描述
file,line
可选。

如果设置 fileline 参数,headers_sent() 会把输出开始的 PHP 源文件名和行号存入 file 和 line 变量中。

提示和注释

注释:一旦报头块已经发送,就不能使用 header() 函数 来发送其它的标头。使用此函数至少可以避免与 HTTP 标头有关的错误信息。

注释:可选的 fileline 参数是 PHP 4.3 中新加的。

例子

例子 1

<?php
// 如果报头未发送,则发送一个
if (!headers_sent())
  {
  header("Location: http://www.w3school.com.cn/");
  exit;
  }
?>

<html>
<body>

...
...

例子 2

使用可选的 file 和 line 参数:

<?php
// 传递 $file 和 $line,供日后使用
// 不要预先为它们赋值
if (!headers_sent($file, $line))
  {
  header("Location: http://www.w3school.com.cn/");
  exit;
  // Trigger an error here
  }
else
  {
  echo "Headers sent in $file on line $line";
  exit;
  }
?>

<html>
<body>

...
...

HTTP协议状态码表示的意思主要分为五类 ,大体是 :  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
1××
  保留
  
2××
  表示请求成功地接收
  
3××
  为完成请求客户需进一步细化请求
  
4××
  客户错误
  
5××
  服务器错误

---------------------------------------------------------------

100 Continue 初始的请求已经接受,客户应当继续发送请求的其余部分。(HTTP 1.1新)

101 Switching Protocols 服务器将遵从客户的请求转换到另外一种协议(HTTP 1.1新)

Successful

=================================

200 OK 一切正常,对GET和POST请求的应答文档跟在后面。

201 Created 服务器已经创建了文档,Location头给出了它的URL。

202 Accepted 已经接受请求,但处理尚未完成。

203 Non-Authoritative Information 文档已经正常地返回,但一些应答头可能不正确,因为使用的是文档的拷贝(HTTP 1.1新)。

204 No Content 没有新文档,浏览器应该继续显示原来的文档。如果用户定期地刷新页面,而Servlet可以确定用户文档足够新,这个状态代码是很有用的。

205 Reset Content 没有新的内容,但浏览器应该重置它所显示的内容。用来强制浏览器清除表单输入内容(HTTP 1.1新)。

206 Partial Content 客户发送了一个带有Range头的GET请求,服务器完成了它(HTTP 1.1新)。

Redirection

==================================

300 Multiple Choices 客户请求的文档可以在多个位置找到,这些位置已经在返回的文档内列出。如果服务器要提出优先选择,则应该在Location应答头指明。

301 Moved Permanently 客户请求的文档在其他地方,新的URL在Location头中给出,浏览器应该自动地访问新的URL。

302 Found 类似于301,但新的URL应该被视为临时性的替代,而不是永久性的。注意,在HTTP1.0中对应的状态信息是“Moved Temporatily”。
出现该状态代码时,浏览器能够自动访问新的URL,因此它是一个很有用的状态代码。

注意这个状态代码有时候可以和301替换使用。例如,如果浏览器错误地请求http://host/~user(缺少了后面的斜杠),有的服务器返回301,有的则返回302。

严格地说,我们只能假定只有当原来的请求是GET时浏览器才会自动重定向。请参见307。

303 See Other 类似于301/302,不同之处在于,如果原来的请求是POST,Location头指定的重定向目标文档应该通过GET提取(HTTP 1.1新)。

304 Not Modified 客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。

305 Use Proxy 客户请求的文档应该通过Location头所指明的代理服务器提取(HTTP 1.1新)。

307
Temporary Redirect
和302(Found)相同。许多浏览器会错误地响应302应答进行重定向,即使原来的请求是POST,即使它实际上只能在POST请求的应答是303时
才能重定向。由于这个原因,HTTP
1.1新增了307,以便更加清除地区分几个状态代码:当出现303应答时,浏览器可以跟随重定向的GET和POST请求;如果是307应答,则浏览器只
能跟随对GET请求的重定向。(HTTP 1.1新)

Client Error


=====================

400 Bad Request 请求出现语法错误。

401 Unauthorized 客户试图未经授权访问受密码保护的页面。应答中会包含一个WWW-Authenticate头,浏览器据此显示用户名字/密码对话框,然后在填写合适的Authorization头后再次发出请求。

403 Forbidden 资源不可用。服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致。

404 Not Found 无法找到指定位置的资源。这也是一个常用的应答。

405 Method Not Allowed 请求方法(GET、POST、HEAD、Delete、PUT、TRACE等)对指定的资源不适用。(HTTP 1.1新)

406 Not Acceptable 指定的资源已经找到,但它的MIME类型和客户在Accpet头中所指定的不兼容。(HTTP 1.1新)

407 Proxy Authentication Required 类似于401,表示客户必须先经过代理服务器的授权。(HTTP 1.1新)

408 Request Timeout 在服务器许可的等待时间内,客户一直没有发出任何请求。客户可以在以后重复同一请求。(HTTP 1.1新)

409 Conflict 通常和PUT请求有关。由于请求和资源的当前状态相冲突,因此请求不能成功。(HTTP 1.1新)

410 Gone 所请求的文档已经不再可用,而且服务器不知道应该重定向到哪一个地址。它和404的不同在于,返回407表示文档永久地离开了指定的位置,而404表示由于未知的原因文档不可用。(HTTP 1.1新)

411 Length Required 服务器不能处理请求,除非客户发送一个Content-Length头。(HTTP 1.1新)

412 Precondition Failed 请求头中指定的一些前提条件失败。(HTTP 1.1新)

413 Request Entity Too Large 目标文档的大小超过服务器当前愿意处理的大小。如果服务器认为自己能够稍后再处理该请求,则应该提供一个Retry-After头。(HTTP 1.1新)

414 Request URI Too Long URI太长。(HTTP 1.1新)

416 Requested Range Not Satisfiable 服务器不能满足客户在请求中指定的Range头。(HTTP 1.1新)

Server Error

===================================

500 Internal Server Error 服务器遇到了意料不到的情况,不能完成客户的请求。

501 Not Implemented 服务器不支持实现请求所需要的功能。例如,客户发出了一个服务器不支持的PUT请求。

502 Bad Gateway 服务器作为网关或者代理时,为了完成请求访问下一个服务器,但该服务器返回了非法的应答。

503 Service Unavailable 服务器由于维护或者负载过重未能应答。例如,Servlet可能在数据库连接池已满的情况下返回503。服务器返回503时可以提供一个Retry-After头。

504 Gateway Timeout 由作为代理或网关的服务器使用,表示不能及时地从远程服务器获得应答。(HTTP 1.1新)

505 HTTP Version Not Supported 服务器不支持请求中所指明的HTTP版本。(HTTP 1.1新)

PHP header() 函数

PHP HTTP 函数

定义和用法

header() 函数向客户端发送原始的 HTTP 报头。

认识到一点很重要,即必须在任何实际的输出被发送之前调用 header() 函数(在 PHP 4 以及更高的版本中,您可以使用输出缓存来解决此问题):

<html>
<?php
// 结果出错
// 在调用 header() 之前已存在输出
header(‘Location: http://www.example.com/‘);
?>

语法

header(string,replace,http_response_code)
参数 描述
string 必需。规定要发送的报头字符串。
replace
可选。指示该报头是否替换之前的报头,或添加第二个报头。

默认是 true(替换)。false(允许相同类型的多个报头)。

http_response_code 可选。把 HTTP 响应代码强制为指定的值。(PHP 4 以及更高版本可用)

提示和注释

注释:从 PHP 4.4 之后,该函数防止一次发送多个报头。这是对头部注入攻击的保护措施。

例子

例子 1

<?php
// Date in the past
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache");
header("Pragma: no-cache");
?>

<html>
<body>

...
...

注释:用户可能会设置一些选项来更改浏览器的默认缓存设置。通过发送上面的报头,您可以覆盖任何这些设置,强制浏览器不进行缓存!

例子 2

提示用户保存一个生成的 PDF 文件(Content-Disposition 报头用于提供一个推荐的文件名,并强制浏览器显示保存对话框):

<?php
header("Content-type:application/pdf");

// 文件将被称为 downloaded.pdf
header("Content-Disposition:attachment;filename=‘downloaded.pdf‘");

// PDF 源在 original.pdf 中
readfile("original.pdf");
?>

<html>
<body>

...
...

注释:微软 IE 5.5 存在一个阻止以上机制的 bug。通过升级为 Service Pack 2 或更高的版本,可以解决该 bug。

PHP HTTP 函数

正确答案:

时间: 2024-10-07 19:54:19

[单选题]那个函数可以检查HTTP头是否已经发送或者发送到哪儿?的相关文章

[单选题]parse_url()函数的功能是:

验证URL,并返回给定的组件 将URL分裂成标准URL组件 全部都不正确 返回解码的URL php parse_url 函数教程 来源:   时间:2013-09-05 19:01:42   阅读数:13954 分享到: 2 [导读] php parse_url 函数教程parse_url ( PHP 4中, PHP 5中) parse_url -解析URL并返回其组成部分 描述 混合parse_url (字符串$网址[摘要$部分= -1 ] ) 此功能解析一个URL并返回一个关联数组含 php

[单选题]php_strip_whitespace 函数返回什么?

返回去掉了空格的字符串 全都不对 返回给定文件中的PHP源码,去掉了注释和空格 返回给定文件中的PHP源码,去掉了空格 返回去掉了注释和空格的字符串 PHP strip_whitespace() 函数 PHP 杂项函数 定义和用法 strip_whitespace() 函数返回已删除 PHP 注释以及空白字符的源代码文件. 该函数对于检测脚本中的实际代码量很有用. 语法 strip_whitespace(filename) 参数 描述 filename 必需.规定文件名. 说明 若成功,则返回被

[单选题]PHP函数,mail($param1, $param2, $param3),其中的$param2参数包含什么?

信息的内容 信息的发送地址 信息的回复地址 信息的主题 正确答案:

[单选题]有关PHP引用的说法,错误的是

[单选题]有关PHP引用的说法,错误的是: unset一个引用,只是断开了变量名和变量内容之间的绑定,这并不意味着变量内容被销毁了. PHP引用本质就是指针,在函数调用范围内可以绑定到别的变量上面. 在一个对象的方法中,$this永远是调用它的对象的引用. 可以将一个变量通过引用传递给函数,这样该函数就可以修改其参数的值. 正确答案: 很遗憾,没答对,再接再厉! 答案解析 引用只是值内存块的别名,而指针是一个实体,存放的值内存地址,需要额外分配内存空间.

你好,C++(13)这道单选题的答案是A、B、C还是D?3.7 枚举类型

3.7  枚举类型 除了之前我们介绍的数值数据和文字数据之外,在现实世界中,常常还会遇到这样一类数据:一道单选题的答案只能是A.B.C.D四个选项中的某一个:红绿灯的颜色只能是红色,绿色和黄色中的某一种:一个人的性别只能是男性或者女性.这种数据都只有有限的几种可能值,其值也只能是这个范围内的某一个.为了抽象和表达这种特殊数据,C++提供了枚举机制. 使用C++的枚举机制,我们可以通过列举某种数据的所有可能值来定义一种新的数据类型,这种数据类型通常被称为枚举类型.反过来,当使用枚举类型来定义变量时

C++内联函数、函数模板之于头文件

一.基本说明 C++标准中提到,一个编译单元是指一个.cpp文件以及它所include的所有.h文件,.h文件里的代码将会被扩展到包含它的.cpp文件里,然后编译器编译该.cpp文件为一个.obj文件,后者拥有PE[PortableExecutable,即Windows可执行文件]文件格式,并且本身包含的就已经是二进制码,但是,不一定能够执行,因为并不保证其中一定有main函数.当编译器将一个工程里的所有.cpp文件以分离的方式编译完毕后,再由连接器(linker)进行连接成为一个.exe文件.

[单选题]function foobar( ) { $a = func_get_args( ); return $a[2];}print foobar(&#39;a&#39;,1,&#39;b&#39;,2);输出是什么?

2 a b 1 a2 获取一个函数的所有参数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 function foo() {     $numargs = func_num_args(); //参数数量     echo "参数个数是: $numargs<br />\n";     if ($numargs >= 2) {         echo "第二个参数的值:" . func_get_arg(1) . "<

[单选题]range(&#39;a&#39;, &#39;z&#39;)返回什么?

这个函数的调用会抛出一个异常 false 按字母顺序排列的a到z 在字母表中a和z的距离 PHP range() 函数 PHP Array 函数 实例 创建一个包含从 "0" 到 "5" 之间的元素范围的数组: <?php $number = range(0,5); print_r ($number); ?> 运行实例 定义和用法 range() 函数创建一个包含指定范围的元素的数组. 该函数返回一个包含从 low 到 high 之间的元素的数组. 注释

(转载)你好,C++(13)这道单选题的答案是A、B、C还是D?3.7 枚举类型

你好,C++(13)这道单选题的答案是A.B.C还是D?3.7 枚举类型 3.7  枚举类型 除了之前我们介绍的数值数据和文字数据之外,在现实世界中,常常还会遇到这样一类数据:一道单选题的答案只能是A.B.C.D四个选项中的某一个:红绿灯的颜色只能是红色,绿色和黄色中的某一种:一个人的性别只能是男性或者女性.这种数据都只有有限的几种可能值,其值也只能是这个范围内的某一个.为了抽象和表达这种特殊数据,C++提供了枚举机制. 使用C++的枚举机制,我们可以通过列举某种数据的所有可能值来定义一种新的数