简明教程 本章将给出关于 PHP 的简明教程。虽然 PHP 的功能并不局限于生成动态的 web 页面,但本章的内容仅涉及于此。请查阅“PHP 能做什么”一节以获取更多信息。 使用了 PHP 的 web 页面将被和通常的 HTML 页面一样处理,可以用通常建立 HTML 页面的方法来建立和编辑它们。
第一个 PHP 页面 本教程假设 PHP 已经安装。安装说明可以在下载页面找到。 建立名为 hello.php 的文件,并带着如下内容: 第一个 PHP 脚本:<filename>hello.php</filename> ]]> 通过终端导航至包含该文件的目录,并使用以下命令启动开发服务器: 通过浏览器使用 Web 服务器的 URL 访问该文件,URL 以 /hello.php 文件名结尾。根据之前执行的命令,URL将是 http://localhost:8000/hello.php。如果所有配置均正确,该文件将由 PHP 解析,并在浏览器中显示“Hello World!”的输出内容。 PHP 可以嵌入到普通 HTML 网页中。这意味着可以在 HTML 文档中编写 PHP 语句,如下例所示: PHP Test Hello World

'; ?> ]]>
这会产生以下输出: PHP Test

Hello World

]]>
该程序非常的简单,它仅仅只是利用了 PHP 的 echo 语句显示了 Hello World。用户一定不会满足于此。请注意该文件无需被执行或以任何方式指定。服务器会找到该文件并提供给 PHP 进行解释,因为使用了“.php”的扩展名,服务器已被配置成自动传递有着“.php”扩展名的文件给 PHP。一个普通的 HTML 文件,加上了几个特别的标签,就可以做很多非常有趣的事情! 以上例子的目的是为了显示 PHP 特殊标识符的格式。在这个例子中,用 <?php 来表示 PHP 标识符的起始,然后放入 PHP 语句并通过加上一个终止标识符 ?> 来退出 PHP 模式。可以根据自己的需要在 HTML 文件中像这样开启或关闭 PHP 模式。请参阅手册中“PHP 基本语法”以获取更多信息。 关于换行 尽管换行在 HTML 中的实际意义不是很大,但适当地使用换行可以使 HTML 代码易读且美观。PHP 会在输出时自动删除其结束符 ?> 后的一个换行。该功能主要是针对在一个页面中嵌入多段 PHP 代码或者包含了无实质性输出的 PHP 文件而设计,与此同时也造成了一些疑惑。如果需要在 PHP 结束符 ?> 之后输出换行的话,可以在其后加一个空格,或者在最后的一个 echo/print 语句中加入一个换行。 关于文本编辑器 有很多文本编辑器以及集成开发环境(IDE)可以被用来建立、编辑和管理 PHP 文件。这些工具中的一部分被列在 PHP 编辑器列表中。如果希望推荐其它的编辑器,请访问以上页面,并要求该页面的维护者将你推荐的编辑器加入到该列表中。使用支持语法高亮功能的编辑器会给开发带来很多帮助。 关于文字处理器 诸如 StarOffice Writer、Microsoft Word 和 Abiword 的文字处理器不适合用来编辑 PHP 程序。如果希望用以上这些工具的某一种来处理脚本,必须保证将结果存成了纯文本格式,否则 PHP 将无法读取并运行这些脚本。 现在已经成功建立了一个简单的 PHP 脚本,那么再来建立一个最著名的 PHP 脚本!调用函数 phpinfo,将会看到很多有关自己系统的有用信息,例如预定义变量、已经加载的 PHP 模块和配置信息。请花一些时间来查看这些重要的信息。 从 PHP 获取系统信息 ]]>
实用的脚本 现在来编写一些更实用的脚本,比如检查浏览页面的访问者在用什么浏览器。要达到这个目的,需要检查用户的 agent 字符串,它是浏览器发送的 HTTP 请求的一部分。该信息被存储在一个变量中。在 PHP 中,变量总是以一个美元符开头。我们现在感兴趣的变量是 $_SERVER['HTTP_USER_AGENT'] $_SERVER 是一个特殊的 PHP 保留变量,它包含了 web 服务器提供的所有信息,被称为超全局变量。请查阅本手册“超全局变量”中的有关内容以获取更多信息。 要显示该变量,只需简单地进行如下操作: 打印变量(数组元素) ]]> 该脚本的输出可能是: PHP 有多种不同类型的变量。以上例子是从 Array 变量中打印了一个元素。数组非常有用。 $_SERVER 只是 PHP 自动全局化的变量之一。可以查阅“预定义变量”一节来查看这些变量的列表,或者也可以通过上节例子中 phpinfo 函数的输出来查看。 可以在一个 PHP 标识中加入多个 PHP 语句,也可以建立一个代码块来做比简单的 echo 更多的事情。例如,如果需要检测 Firefox,可以进行如下操作: <link linkend="language.control-structures">流程控制</link>与<link linkend="language.functions">函数</link>的使用 ]]> 该脚本的输出可能是: 这里要介绍一些新的原理。上面用了一个 if 语句。如果用户对 C 语言的基本语法比较熟悉,则应该对此很熟悉,否则,可能需要拿起任何一本 PHP 介绍性的书籍并阅读前面的两三个章节,或者也可以阅读本手册的“语言参考”一章。 需要介绍的第二个原理,是对 str_contains 函数的调用。str_contains 是 PHP 的一个内置函数,其功能是确定指定字符串是否包含其它字符串。例如我们现在需要在 $_SERVER['HTTP_USER_AGENT'](即所谓的 haystack)变量中寻找 'Firefox'。如果在这个 haystack 中该字符串(即所谓的 needle)被找到(“草里寻针”),则函数返回 &true;;如果没有,则返回 &false;。如果返回 &true;,则 if 会将条件判断为 &true; 并运行其花括号 {} 内的代码;否则,则不运行这些代码。可以自己尝试利用 if,else 以及其它的函数如 strtoupperstrlen 来建立类似的脚本。在本手册中相关的页面也包含有范例。如果对如何使用函数不是很确定,可以阅读手册中有关“如何阅读函数的定义”和“函数”的有关章节。 以下我们进一步显示如何进出 PHP 模式,甚至是在一个 PHP 代码块的中间: 混合 HTML 和 PHP 模式

str_contains() returned true

You are using Firefox

str_contains() returned false

You are not using Firefox

]]>
该脚本的输出可能是: str_contains() returned true

You are using Firefox

]]>
和使用 PHP echo 语句输出不同的是,以上示例跳出了 PHP 模式直接发送 HTML。这里需要特别注意的一点是脚本的逻辑流保持不变。根据 str_contains 的结果,只会有一个 HTML 块将发送给浏览者。换句话说,取决于是否找到字符串 Firefox
处理表单 PHP 一个很有用的特点体现在它处理 HTML 表单的方式。需要理解的非常重要的原理,是表单的任何元素都在 PHP 脚本中自动生效。请参阅本手册中“PHP 的外部变量”以获取关于在 PHP 中使用表单的详细信息及范例。以下是 HTML 表单的范例: 一个简单的 HTML 表单 ]]> 该表单中并没有什么特殊的地方,其中没有使用任何特殊的标识符。当用户填写了该表单并点击了提交按钮,页面 action.php 将被调用。在该文件中,可以加入如下内容: 打印来自表单的数据 . You are years old. ]]> 该脚本的输出可能是: 除了htmlspecialchars(int) 部分,这段程序做什么用显而易见。htmlspecialchars 使得 HTML 之中的特殊字符被正确的编码,从而不会被使用者在页面注入 HTML 标签或者 Javascript 代码。例如 age 字段,我们明确知道他是一个数值,因此我们将它转换为一个int来自动的消除任何不必要的字符。也可以使用 PHP 的 filter 扩展来自动完成该工作。PHP 将自动设置 $_POST['name']$_POST['age'] 变量。在这之前我们使用了超全局变量 $_SERVER,现在我们引入了超全局变量 $_POST,它包含了所有的 POST 数据。请注意我们的表单提交数据的方法(method)。如果使用了 GET 方法,那么表单中的信息将被储存到超全局变量 $_GET 中。如果并不关心请求数据的来源,也可以用超全局变量 $_REQUEST,它包含了所有 GET、POST 和 COOKIE 的数据。
下一步做什么? 用现在掌握的知识,应该能够理解本手册中的大部分内容以及其中各式各样的脚本范例。 请查阅 PHP Conference 资料网站 &url.php.talks; 以观看更多幻灯片,这些幻灯片展示了许多 PHP 其它的功能。