My Labs! PHP

Work is Worth Doing of Worth Doing Well.

现在让我们做一些更有用的事。我们开始检查访问者使用的是哪种类型的浏览器。关于这个,我们检查用户浏览器当成 HTTP 请求的一部分而发送的代理字符串。该信息被存储在一个变量中。PHP 中的变量始终都以一个美元符号开始。我们感兴趣的正确变量现在是 $_SERVER['HTTP_USER_AGENT']。

提示:$_SERVER 是一种专门被保留的 PHP 变量,它们包含了所有的 Web 服务器信息。也就是所说的超级全局。关于更多信息,参考关于超级全局的手册页面。这些特殊变量在 PHP 4.1.0 中被引入。而这次,我们使用较旧的 $HTTP_*_VARS 数组来替代,比如 $HTTP_SERVER_VARS。虽然是不被赞成的,但是这些较旧的变量仍然存在。(同样参考旧代码的提示。)

要显示这个变量,你只需要:

打印一个变量(数组元素)
<?php
echo $_SERVER['HTTP_USER_AGENT'];
?>

该脚本的范例输出可能是:

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)

许多类型的变量在 PHP 中可用。在前面的范例中我们打印了一个 Array 元素。数组可以是非常有用的。

$_SERVER 只是 PHP 自动为你提供的一个变量。在手册的[被保留变量]部分可以看到一个列表,或者你可以查看以上范例中被使用的 phpinfo() 功能的输出来得到它们的完整列表。

你可以把多条 PHP 声明存放进一个 PHP 标签中并且创建可以比一个 echo 做更多事的小代码块。例如,如果你需要检查 Internet Explorer,你可以这样:

使用控制结构和功能的范例
<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) {
    echo 'You are using Internet Explorer.<br />';
}
?> 

该脚本的一个简单输出可能是:

You are using Internet Explorer.<br />

在这里我们引入了新的概念。我们有一条 if 声明。如果你熟悉由 C 语言所使用的基本语法,在你看来这应该是符合逻辑的。否则,你就或许应该获得 PHP 的介绍书籍并且阅读第一章,或者阅读手册的[语言参考]部分。你可以在 http://www.php.net/books.php 中找到 PHP 的书籍列表。

被我们引入的第二个概念就是 strpos() 功能调用。而 strpos() 是一个内建在 PHP 中的功能,用来在字符串中搜索其他的字符串。在这种情况下我们期待的是 $_SERVER['HTTP_USER_AGENT'](所谓的堆)中的 'MSIE'(所谓的指针)。如果指针在堆中被找到,那么该功能就返回相对于堆的开始的指针位置。否则,它返回 FALSE。如果它没有返回 FALSE,那么 if 表达式就是 TRUE 并且它的代码被执行。否则,代码不会运行。摸索创建任何类似的范例,以 if,else 和其他功能(比如 strtoupper() 和 strlen())。每个相关的手册页面都包含了范例。如果你不能确定如何使用功能,你将需要同时阅读如何学习功能定义的手册页面和关于 PHP 功能的部分。

我们可以进一步获得这个步骤并且说明你怎样才可以从 PHP 模式中进出,甚至是在 PHP 块的中间:

同时混合 HTML 与 PHP 模式
<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) {
?>
<h3>strpos() must have returned non-false</h3>
<p>You are using Internet Explorer</p>
<?php
} else {
?>
<h3>strpos() must have returned false</h3>
<p>You are not using Internet Explorer</p>
<?php
}
?> 

这个脚本的范例输出可能是:

<h3>strpos() must have returned non-false</h3>
<p>You are using Internet Explorer</p>

作为使用 PHP 中 echo 声明的替代就是输出内容,我们跳出 PHP 模式并且只发送一致的 HTML。这里需要注意的重点与需要强调就是脚本的逻辑流可以保持完整。只有 HTML 块才会结束发送到依赖于 strpos() 结果的查看器。换句话说,它依赖于字符串 MSIE 是否被找到。

posted on 2007-03-20 18:32 Laeb 阅读(244) 评论(0)  编辑 收藏 引用 网摘 所属分类: 开始 / 简单指南