Sophie

Sophie

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

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
>实用的脚本</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="tutorial.html"><LINK
REL="PREVIOUS"
TITLE="第一个 PHP 页面"
HREF="tutorial.firstpage.html"><LINK
REL="NEXT"
TITLE="处理表单"
HREF="tutorial.forms.html"><META
HTTP-EQUIV="Content-type"
CONTENT="text/html; charset=UTF-8"></HEAD
><BODY
CLASS="sect1"
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="tutorial.firstpage.html"
ACCESSKEY="P"
>上一页</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>章 2. 简明教程</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="tutorial.forms.html"
ACCESSKEY="N"
>下一页</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="tutorial.useful"
>实用的脚本</A
></H1
><P
>&#13;   现在来编写一些更实用的脚本,比如检查浏览页面的访问者在用什么浏览器。要达到这个目的,需要检查用户的
   agent 字符串,它是浏览器发送的 HTTP 请求的一部分。该信息被存储在一个<A
HREF="language.variables.html"
>变量</A
>中。在 PHP
   中,变量总是以一个美元符开头。我们现在感兴趣的变量是
   <CODE
CLASS="varname"
>$_SERVER['HTTP_USER_AGENT']</CODE
>。
  </P
><DIV
CLASS="note"
><BLOCKQUOTE
CLASS="note"
><P
><B
>注意: </B
>
    <A
HREF="reserved.variables.html#reserved.variables.server"
>$_SERVER</A
>
    是一个特殊的 PHP 保留变量,它包含了 web
    服务器提供的所有信息,被称为超全局变量。请查阅本手册“<A
HREF="language.variables.predefined.html#language.variables.superglobals"
>超全局变量</A
>”中的有关内容以获取更多信息。这些特殊的变量是在
    PHP <A
HREF="http://www.php.net/releases/4_1_0.php"
TARGET="_top"
>4.1.0</A
> 版本引入的。在这之前使用
    <CODE
CLASS="varname"
>$HTTP_*_VARS</CODE
> 数组,如
    <CODE
CLASS="varname"
>$HTTP_SERVER_VARS</CODE
>。尽管现在已经不用了,但它们在新版本中仍然存在(参见“<A
HREF="tutorial.oldcode.html"
>旧代码</A
>”一节中的注解)。
   </P
></BLOCKQUOTE
></DIV
><P
>&#13;   要显示该变量,只需简单地进行如下操作:
  </P
><P
>&#13;   <TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
CLASS="EXAMPLE"
><TR
><TD
><DIV
CLASS="example"
><A
NAME="AEN248"
></A
><P
><B
>例 2-3. 打印一个变量(数组元素)</B
></P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><code><font color="#000000">
<font color="#0000BB">&lt;?php <br /></font><font color="#007700">echo </font><font color="#0000BB">$_SERVER</font><font color="#007700">[</font><font color="#DD0000">'HTTP_USER_AGENT'</font><font color="#007700">]; <br /></font><font color="#0000BB">?&gt;</font>
</font>
</code></TD
></TR
></TABLE
><P
>&#13;    该脚本的输出可能是:
   </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><PRE
CLASS="html"
>Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)</PRE
></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
>
  </P
><P
>&#13;   PHP 有很多种不同<A
HREF="language.types.html"
>类型</A
>的变量。在以上例子中我们打印了一个<A
HREF="language.types.array.html"
>数组</A
>的单元。数组是一类非常有用的变量。
  </P
><P
>&#13;   <CODE
CLASS="varname"
>$_SERVER</CODE
> 只是 PHP 自动全局化的变量之一。可以查阅“<A
HREF="reserved.variables.html"
>保留变量</A
>”一节来查看这些变量的列表,或者也可以通过上节例子中
   <A
HREF="function.phpinfo.html"
><B
CLASS="function"
>phpinfo()</B
></A
> 函数的输出来查看。
  </P
><P
>&#13;   可以在一个 PHP 标识中加入多个 PHP 语句,也可以建立一个代码块来做比简单的
   echo 更多的事情。例如,如果需要识别 Internet Explorer,可以进行如下操作:
  </P
><P
>&#13;   <TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
CLASS="EXAMPLE"
><TR
><TD
><DIV
CLASS="example"
><A
NAME="AEN262"
></A
><P
><B
>例 2-4. <A
HREF="language.control-structures.html"
>流程控制</A
>与<A
HREF="language.functions.html"
>函数</A
>的使用</B
></P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><code><font color="#000000">
<font color="#0000BB">&lt;?php<br /></font><font color="#007700">if (</font><font color="#0000BB">strpos</font><font color="#007700">(</font><font color="#0000BB">$_SERVER</font><font color="#007700">[</font><font color="#DD0000">'HTTP_USER_AGENT'</font><font color="#007700">], </font><font color="#DD0000">'MSIE'</font><font color="#007700">) !== </font><font color="#0000BB">FALSE</font><font color="#007700">) {<br />&nbsp;&nbsp;&nbsp;&nbsp;echo </font><font color="#DD0000">'正在使用 Internet Explorer。&lt;br /&gt;'</font><font color="#007700">;<br />}<br /></font><font color="#0000BB">?&gt;</font>
</font>
</code></TD
></TR
></TABLE
><P
>&#13;     该脚本的输出可能是:
    </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><PRE
CLASS="html"
>正在使用 Internet Explorer。&#60;br /&#62;</PRE
></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
>
  </P
><P
>&#13;   这里要介绍一些新的原理。上面用了一个
   <A
HREF="language.control-structures.html#control-structures.if"
>if</A
> 语句。如果用户对
   C 语言的基本语法比较熟悉,则应该对此很熟悉,否则,可能需要拿起任何一本
   PHP 介绍性的书籍并阅读前面的两三个章节,或者也可以阅读本手册的“<A
HREF="langref.html"
>语言参考</A
>”一章。
  </P
><P
>&#13;   需要介绍的第二个原理,是对 <A
HREF="function.strpos.html"
><B
CLASS="function"
>strpos()</B
></A
>
   函数的调用。<A
HREF="function.strpos.html"
><B
CLASS="function"
>strpos()</B
></A
> 是 PHP
   的一个内置函数,其功能是在一个字符串中搜索另外一个字符串。例如我们现在需要在
   <CODE
CLASS="varname"
>$_SERVER['HTTP_USER_AGENT']</CODE
>(即所谓的 haystack)变量中寻找
   <TT
CLASS="literal"
>'MSIE'</TT
>。如果在这个 haystack
   中该字符串(即所谓的 needle)被找到,则函数返回 needle
   在 haystack 中相对开头的位置;如果没有,则返回 <TT
CLASS="constant"
><B
>FALSE</B
></TT
>。如果该函数没有返回
   <TT
CLASS="constant"
><B
>FALSE</B
></TT
>,则 <A
HREF="language.control-structures.html#control-structures.if"
>if</A
> 会将条件判断为
   <TT
CLASS="constant"
><B
>TRUE</B
></TT
> 并运行其花括号 {} 内的代码;否则,则不运行这些代码。可以自己尝试利用
   <A
HREF="language.control-structures.html#control-structures.if"
>if</A
>,<A
HREF="control-structures.else.html"
>else</A
> 以及其它的函数,例如
   <A
HREF="function.strtoupper.html"
><B
CLASS="function"
>strtoupper()</B
></A
> 和
   <A
HREF="function.strlen.html"
><B
CLASS="function"
>strlen()</B
></A
>,来建立类似的脚本。在本手册中相关的页面也包含有范例。如果对如何使用函数不是很确定,可以阅读手册中有关“<A
HREF="about.prototypes.html"
>如何阅读函数定义</A
>”和“<A
HREF="language.functions.html"
>函数</A
>”的有关章节。
  </P
><P
>&#13;   以下我们进一步显示如何进出 PHP 模式,甚至是在一个 PHP 代码块的中间:
  </P
><P
>&#13;   <TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
CLASS="EXAMPLE"
><TR
><TD
><DIV
CLASS="example"
><A
NAME="AEN289"
></A
><P
><B
>例 2-5. 混和 HTML 和 PHP 模式</B
></P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><code><font color="#000000">
<font color="#0000BB">&lt;?php<br /></font><font color="#007700">if (</font><font color="#0000BB">strpos</font><font color="#007700">(</font><font color="#0000BB">$_SERVER</font><font color="#007700">[</font><font color="#DD0000">'HTTP_USER_AGENT'</font><font color="#007700">], </font><font color="#DD0000">'MSIE'</font><font color="#007700">) !== </font><font color="#0000BB">FALSE</font><font color="#007700">) {<br /></font><font color="#0000BB">?&gt;<br /></font>&lt;h3&gt;strpos() 肯定没有返回假 (FALSE)&lt;/h3&gt;<br />&lt;p&gt;正在使用 Internet Explorer&lt;/p&gt;<br /><font color="#0000BB">&lt;?php<br /></font><font color="#007700">} else {<br /></font><font color="#0000BB">?&gt;<br /></font>&lt;h3&gt;strpos() 肯定返回假 (FALSE)&lt;/h3&gt;<br />&lt;center&gt;&lt;b&gt;没有使用 Internet Explorer&lt;/b&gt;&lt;/center&gt;<br /><font color="#0000BB">&lt;?php<br /></font><font color="#007700">}<br /></font><font color="#0000BB">?&gt;</font>
</font>
</code></TD
></TR
></TABLE
><P
>&#13;     该脚本的输出可能是:
    </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><PRE
CLASS="html"
>&#60;h3&#62;strpos() 肯定没有返回假 (FALSE)&#60;/h3&#62;
&#60;p&#62;正在使用 Internet Explorer&#60;/p&#62;</PRE
></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
>
  </P
><P
>&#13;   和以上我们用一个 PHP 的 echo 语句来输出不同的是,我们跳出了
   PHP 模式来直接写 HTML
   代码。这里很值得注意的一点是,对于这两种情况而言,脚本的逻辑效率是相同的。在判断了
   <A
HREF="function.strpos.html"
><B
CLASS="function"
>strpos()</B
></A
> 函数的返回值是 <TT
CLASS="constant"
><B
>TRUE</B
></TT
> 或是
   <TT
CLASS="constant"
><B
>FALSE</B
></TT
>,也就是判断了字符串 <TT
CLASS="literal"
>'MSIE'</TT
>
   是否被找到之后,最终只有一个 HTML 块被发送给浏览者。
  </P
></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="tutorial.firstpage.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="tutorial.forms.html"
ACCESSKEY="N"
>下一页</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>第一个 PHP 页面</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="tutorial.html"
ACCESSKEY="U"
>上一级</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>处理表单</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>