16.2 处理表单
表单从访问者那里收集信息,脚本则对这些信息进行处理。脚本可以将信息记录到服务器上的数据库里,通过电子邮件发送信息,或者执行很多其他的功能。
在本章中我们主要关注的是Web表单的创建,因此我们会使用一个非常简单的PHP脚本,当访问者填写并提交表单时,这段脚本会将数据返回给访问者,如图16.2.1所示。我还将提供另一个脚本,用于将表单的内容发送到你的电子邮箱,如图16.2.2所示。
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="utf-8" />
- <title>Processing Form Data</title>
- <style type="text/css">
- body {
- font-size: 100%;
- font-family: Arial, sans-serif;
- }
- </style>
- </head>
- <body>
- <p>This is a very simple PHP script that outputs the name of each bit of information (that corresponds to the <code>name</code> attribute for that field) along with the value that was sent with it right in the browser window.</p>
- <p>In a more useful script, you might store this information in a MySQL database, or send it to your email address.</p>
- <table>
- <tr><th>Field Name</th><th>Value(s)</th></tr>
- <?php
- if (empty($_POST)) {
- print "<p>No data was submitted.</p>";
- } else {
- foreach ($_POST as $key => $value) {
- if (get_magic_quotes_gpc()) $value=stripslashes($value);
- if ($key=='extras') {
- if (is_array($_POST['extras']) ){
- print "<tr><td><code>$key</code></td><td>";
- foreach ($_POST['extras'] as $value) {
- print "<i>$value</i><br />";
- }
- print "</td></tr>";
- } else {
- print "<tr><td><code>$key</code></td><td><i>$value</i></td></tr>\n";
- }
- } else {
- print "<tr><td><code>$key</code></td><td><i>$value</i></td></tr>\n";
- }
- }
- }
- ?>
- </table>
- </body>
- </html>
图16.2.1 这是用于处理本章表单的脚本。注意PHP脚本放置在HTML页面内(可以在本书配套网站上找到这段脚本的带注释版本,见www.bruceontheloose.com/htmlcss/examples/)
图16.2.2 图16.2.1中的脚本会在浏览器窗口中将每个字段的名和值通过表格呈现出来
- 关于PHP
PHP是一个递归的缩写词,它表示PHP: Hypertext Preprocessor。这是一种开源的脚本语言,它是专门为制作交互式Web页面而设计的。它非常简单明了[要了解更多关于使用PHP的信息,我强烈推荐Larry Ullman的PHP for the Web: Visual QuickStart Guide,Fourth Edition1一书(Peachpit Press,2011)。]我的脚本称不上复杂,恰好能体现PHP的简单性。不需要花费太多的工夫,就能让脚本做我需要的任何事情。
1 本书中文版《PHP基础教程(第4版)》已由人民邮电出版社出版,详细信息参见图灵社区本书页面http://www.ituring.com.cn/book/741。——编者注
从基本的服务器端Web任务,到复杂的Web应用(如WordPress和Drupal,它们是最流行的博客与内容管理系统),PHP都能胜任。PHP既是一种入门级的编程语言,也是一种专业的编程语言。随着你技能的增长,PHP也能跟上!
除了容易学习以外,PHP还有很多其他的特性让它成为处理HTML表单的理想语言。首先,PHP是一种解释型(又称脚本)语言,这意味着它在执行前不需要先进行编译。写完PHP,马上就可以执行。其次,PHP脚本可以是独立的文本文件,但也可以直接在HTML页面中编写,这使得PHP对Web设计人员来说特别方便。
最后,由于PHP是专门为万维网设计的,因此它非常适合执行网页所需的任务,并能与HTML很好地协作。它有数百个内置函数可供利用。在本章中,我们只会简单地讨论PHP表单处理工具。PHP的官方网站为www.php.net。
服务器端与客户端
PHP是一种服务器端(server-side)语言,这意味着它运行于为网页服务的计算机(称为服务器),而不是查看网页的访问者的计算机。脚本必须上传到服务器上才能发挥作用。此外,服务器必须已经安装PHP才能对脚本进行解释。专业网站的很多功能(如存储数据,发送电子邮件等)都需要服务器端语言。
客户端(client-side)语言(如JavaScript)是在浏览器中运行的。它们可以在完全不与服务器交互的情况下执行很多任务。对于操纵浏览器窗口,在提交表单前检查是否所有数据都已填写,以及其他不需要服务器(或在涉及服务器之前)的任务,客户端语言都很适合。
- 安全性
向服务器发送数据的时候,尤其需要注意安全性。不要对数据作任何假设,因为即便对表单建立了安全措施,坏人也可以创建他们自己的表单,调用你的脚本并发送无数的垃圾信息。应该显式地检查数据,确保它们是符合预期的,不包含任何额外的有害内容。
- PHP的替代语言或框架
有很多其他的语言或框架可以替代PHP对表单进行处理,如Microsoft的ASP.NET、Adobe的ColdFusion,以及JSP(Java Server Pages)、Ruby on Rails等。