Sophie

Sophie

distrib > Mandriva > 2008.1 > x86_64 > by-pkgid > 05cd670d8a02b2b4a0ffb1756f2e8308 > files > 11125

php-manual-zh-5.2.4-1mdv2008.1.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>HTTP 和 HTTPS</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
TITLE="PHP 手册"
HREF="index.html"><LINK
REL="UP"
TITLE="支持的协议/封装协议列表"
HREF="wrappers.html"><LINK
REL="PREVIOUS"
TITLE="Socket"
HREF="wrappers.socket.html"><LINK
REL="NEXT"
TITLE="FTP 和 FTPS"
HREF="wrappers.ftp.html"><META
HTTP-EQUIV="Content-type"
CONTENT="text/html; charset=UTF-8"></HEAD
><BODY
CLASS="section"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>PHP 手册</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="wrappers.socket.html"
ACCESSKEY="P"
>上一页</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>附录 N. 支持的协议/封装协议列表</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="wrappers.ftp.html"
ACCESSKEY="N"
>下一页</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="section"
><H1
CLASS="section"
><A
NAME="wrappers.http"
>HTTP 和 HTTPS</A
></H1
><P
>PHP 3, PHP 4, PHP 5。自 PHP 4.3.0 起支持 <TT
CLASS="filename"
>https://</TT
></P
><P
></P
><UL
><LI
><P
><TT
CLASS="filename"
>http://example.com</TT
></P
></LI
><LI
><P
><TT
CLASS="filename"
>http://example.com/file.php?var1=val1&#38;var2=val2</TT
></P
></LI
><LI
><P
><TT
CLASS="filename"
>http://user:password@example.com</TT
></P
></LI
><LI
><P
><TT
CLASS="filename"
>https://example.com</TT
></P
></LI
><LI
><P
><TT
CLASS="filename"
>https://example.com/file.php?var1=val1&#38;var2=val2</TT
></P
></LI
><LI
><P
><TT
CLASS="filename"
>https://user:password@example.com</TT
></P
></LI
></UL
><P
>&#13;   允许通过 HTTP 1.0 使用 HTTP GET 方法对文件/资源进行只读访问。<TT
CLASS="literal"
>Host:</TT
>
   报头也会通过请求发送出去以支持基于域名的虚拟主机。如果在 ini
   文件或者流上下文配置了 <A
HREF="ref.filesystem.html#ini.user-agent"
>user_agent</A
>
   字符串,也会被包括在请求报头中。
  </P
><DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
BORDER="1"
WIDTH="100%"
><TR
><TD
ALIGN="CENTER"
><B
>警告</B
></TD
></TR
><TR
><TD
ALIGN="LEFT"
><P
>当使用
SSL 时,Microsoft IIS 将违反协议不发送 close_notify 标记就关闭连接。PHP
将在到达数据尾端时报告 "SSL: Fatal Protocol Error"。要绕过此问题,应将
<A
HREF="ref.errorfunc.html#ini.error-reporting"
>error_reporting</A
> 级别降低为不包括警告。PHP
4.3.7 及更高版本可以在当使用 https:// 封装协议打开流的时候检测出有此问题的
IIS 服务器并抑制警告。如果使用 <A
HREF="function.fsockopen.html"
><B
CLASS="function"
>fsockopen()</B
></A
>
来创建一个 ssl:// 套接字,则需要自己检测并抑制警告信息。</P
></TD
></TR
></TABLE
></DIV
><P
>&#13;   自 PHP 4.0.5 起支持重定向。如果使用较早版本的 PHP 则需要在 URL
   末尾包括一个斜线。如果一定要知道文档所在的资源的
   url(在所有重定向被处理过之后),则需要处理从流返回的一系列响应报头信息。
  </P
><DIV
CLASS="informalexample"
><P
></P
><A
NAME="AEN302674"
></A
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><code><font color="#000000">
<font color="#0000BB">&lt;?php<br />$url </font><font color="#007700">= </font><font color="#DD0000">'http://www.example.com/redirecting_page.php'</font><font color="#007700">;<br /><br /></font><font color="#0000BB">$fp </font><font color="#007700">= </font><font color="#0000BB">fopen</font><font color="#007700">(</font><font color="#0000BB">$url</font><font color="#007700">, </font><font color="#DD0000">'r'</font><font color="#007700">);<br /><br /></font><font color="#FF8000">/* 在 PHP 4.3.0 之前使用 $http_response_header<br />&nbsp;&nbsp;&nbsp;而不是 stream_get_meta_data() */<br /></font><font color="#0000BB">$meta_data </font><font color="#007700">= </font><font color="#0000BB">stream_get_meta_data</font><font color="#007700">(</font><font color="#0000BB">$fp</font><font color="#007700">);<br />foreach(</font><font color="#0000BB">$meta_data</font><font color="#007700">[</font><font color="#DD0000">'wrapper_data'</font><font color="#007700">] as </font><font color="#0000BB">$response</font><font color="#007700">) {<br /><br />&nbsp;&nbsp;</font><font color="#FF8000">/* 重定向到何处? */<br />&nbsp;&nbsp;</font><font color="#007700">if (</font><font color="#0000BB">substr</font><font color="#007700">(</font><font color="#0000BB">strtolower</font><font color="#007700">(</font><font color="#0000BB">$response</font><font color="#007700">), </font><font color="#0000BB">0</font><font color="#007700">, </font><font color="#0000BB">18</font><font color="#007700">) == </font><font color="#DD0000">'content-location: '</font><font color="#007700">) {<br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">/* 把要重定向的链接赋值给 $url */<br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">$url </font><font color="#007700">= </font><font color="#0000BB">substr</font><font color="#007700">(</font><font color="#0000BB">$response</font><font color="#007700">, </font><font color="#0000BB">18</font><font color="#007700">);<br />&nbsp;&nbsp;}<br />}<br /></font><font color="#0000BB">?&gt;</font>
</font>
</code></TD
></TR
></TABLE
><P
></P
></DIV
><P
>&#13;   流允许访问资源的<SPAN
CLASS="emphasis"
><I
CLASS="emphasis"
>正文</I
></SPAN
>,报头部分保存在
   <CODE
CLASS="varname"
>$http_response_header</CODE
> 变量中。自
   PHP 4.3.0 起,可以用
   <A
HREF="function.stream-get-meta-data.html"
><B
CLASS="function"
>stream_get_meta_data()</B
></A
> 得到报头。
  </P
><P
>&#13;   HTTP 连接是只读的,不能将数据写入或者拷贝文件到 HTTP 资源。
  </P
><DIV
CLASS="note"
><BLOCKQUOTE
CLASS="note"
><P
><B
>注意: </B
>
    自 PHP 4.3.0 起开始支持 HTTPS,需要在编译时加入 OpenSSL 的支持。
   </P
></BLOCKQUOTE
></DIV
><P
>&#13;   <DIV
CLASS="table"
><A
NAME="AEN302684"
></A
><P
><B
>表 N-2. Wrapper Summary</B
></P
><TABLE
BORDER="1"
CLASS="CALSTABLE"
><COL><COL><THEAD
><TR
><TH
>属性</TH
><TH
>支持</TH
></TR
></THEAD
><TBODY
><TR
><TD
>受限于 <A
HREF="ref.filesystem.html#ini.allow-url-fopen"
>allow_url_fopen</A
></TD
><TD
>是</TD
></TR
><TR
><TD
>允许读取</TD
><TD
>是</TD
></TR
><TR
><TD
>允许写入</TD
><TD
>否</TD
></TR
><TR
><TD
>允许附加</TD
><TD
>否</TD
></TR
><TR
><TD
>允许同时读写</TD
><TD
>无效</TD
></TR
><TR
><TD
>支持 <A
HREF="function.stat.html"
><B
CLASS="function"
>stat()</B
></A
></TD
><TD
>否</TD
></TR
><TR
><TD
>支持 <A
HREF="function.unlink.html"
><B
CLASS="function"
>unlink()</B
></A
></TD
><TD
>否</TD
></TR
><TR
><TD
>支持 <A
HREF="function.rename.html"
><B
CLASS="function"
>rename()</B
></A
></TD
><TD
>否</TD
></TR
><TR
><TD
>支持 <A
HREF="function.mkdir.html"
><B
CLASS="function"
>mkdir()</B
></A
></TD
><TD
>否</TD
></TR
><TR
><TD
>支持 <A
HREF="function.rmdir.html"
><B
CLASS="function"
>rmdir()</B
></A
></TD
><TD
>否</TD
></TR
></TBODY
></TABLE
></DIV
>
  </P
><P
>&#13;   <DIV
CLASS="table"
><A
NAME="AEN302729"
></A
><P
><B
>表 N-3. 上下文选项</B
></P
><TABLE
BORDER="1"
CLASS="CALSTABLE"
><COL><COL><COL><THEAD
><TR
><TH
>名称</TH
><TH
>用法</TH
><TH
>默认值</TH
></TR
></THEAD
><TBODY
><TR
><TD
><TT
CLASS="literal"
>method</TT
></TD
><TD
><TT
CLASS="constant"
><B
>GET</B
></TT
>、<TT
CLASS="constant"
><B
>POST</B
></TT
>
       或任何其它被远程服务器支持的 HTTP 方式。</TD
><TD
><TT
CLASS="constant"
><B
>GET</B
></TT
></TD
></TR
><TR
><TD
><TT
CLASS="literal"
>header</TT
></TD
><TD
>&#13;        请求中要发送的附加的头信息。此选项中的值将覆盖其它值(例如
        <TT
CLASS="literal"
>User-agent:</TT
>,<TT
CLASS="literal"
>Host:</TT
> 和
        <TT
CLASS="literal"
>Authentication:</TT
>)。
       </TD
><TD
>&nbsp;</TD
></TR
><TR
><TD
><TT
CLASS="literal"
>user_agent</TT
></TD
><TD
>&#13;        在 User-Agent: 头信息中要发送的值。此值仅用于<SPAN
CLASS="emphasis"
><I
CLASS="emphasis"
>没有</I
></SPAN
>在上面
        <TT
CLASS="literal"
>header</TT
> 的上下文选项中指定 user-agent 时。
       </TD
><TD
>&#13;        <TT
CLASS="filename"
>php.ini</TT
> 设置:<TT
CLASS="literal"
>user_agent</TT
>
       </TD
></TR
><TR
><TD
><TT
CLASS="literal"
>content</TT
></TD
><TD
>&#13;        头信息之后要发送的附加数据。典型用于 POST 或 PUT 请求。
       </TD
><TD
>&nbsp;</TD
></TR
><TR
><TD
><TT
CLASS="literal"
>proxy</TT
></TD
><TD
>&#13;        以 URI 格式指定的代理服务器(例如
        <TT
CLASS="literal"
>tcp://proxy.example.com:5100</TT
>)。HTTPS
        代理(通过 HTTP 代理服务器)仅在 PHP 5.1.0 或更高版本可用。
       </TD
><TD
>&nbsp;</TD
></TR
><TR
><TD
><TT
CLASS="literal"
>request_fulluri</TT
></TD
><TD
>&#13;        设置为 <TT
CLASS="constant"
><B
>TRUE</B
></TT
> 时,建立请求时整个 URI 将被使用。(即
        <TT
CLASS="literal"
>GET http://www.example.com/path/to/file.html HTTP/1.0</TT
>)。
        而这是一个非标准请求格式,某些代理服务器需要它。
       </TD
><TD
><TT
CLASS="constant"
><B
>FALSE</B
></TT
></TD
></TR
><TR
><TD
><TT
CLASS="literal"
>max_redirects</TT
></TD
><TD
>&#13;         连续重定向的最大值。取值为 <TT
CLASS="literal"
>1</TT
>
         或更小的值表示不跟随重定向。PHP 5.1.0 新加的。
        </TD
><TD
>20</TD
></TR
></TBODY
></TABLE
></DIV
>
  </P
><DIV
CLASS="note"
><BLOCKQUOTE
CLASS="note"
><P
><B
>底层的套接字流(socket stream)上下文选项: </B
>
    有可能通过<A
HREF="transports.html#transports.inet"
>底层传输(underlying transport)</A
>支持附加的上下文选项。对于
    <TT
CLASS="literal"
>http://</TT
> 流,参考
    <TT
CLASS="literal"
>tcp://</TT
> 传输的上下文选项。对于
    <TT
CLASS="literal"
>https://</TT
> 流,参考
    <TT
CLASS="literal"
>ssl://</TT
> 传输的上下文选项。
   </P
></BLOCKQUOTE
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="wrappers.socket.html"
ACCESSKEY="P"
>上一页</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>起始页</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="wrappers.ftp.html"
ACCESSKEY="N"
>下一页</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Socket</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="wrappers.html"
ACCESSKEY="U"
>上一级</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>FTP 和 FTPS</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>