處理表單

PHP 一個(gè)很有用的特點(diǎn)體現(xiàn)在它處理 PHP 表單的方式。需要理解的非常重要的原理,是表單的任何元素都在 PHP 腳本中自動(dòng)生效。請(qǐng)參閱本手冊(cè)中“PHP 的外部變量”以獲取關(guān)于在 PHP 中使用表單的詳細(xì)信息及范例。以下是 HTML 表單的范例:

示例 #1 一個(gè)簡(jiǎn)單的 HTML 表單

<form action="action.php" method="post">
 <p>姓名: <input type="text" name="name" /></p>
 <p>年齡: <input type="text" name="age" /></p>
 <p><input type="submit" /></p>
</form>

該表單中并沒有什么特殊的地方,其中沒有使用任何特殊的標(biāo)識(shí)符。當(dāng)用戶填寫了該表單并點(diǎn)擊了提交按鈕,頁面 action.php 將被調(diào)用。在該文件中,可以加入如下內(nèi)容:

示例 #2 打印來自表單的數(shù)據(jù)

你好,<?php echo htmlspecialchars($_POST['name']); ?>
你 <?php echo (int)$_POST['age']; ?> 歲了。

該腳本的輸出可能是:

你好,Joe。你 22 歲了。

除了htmlspecialchars()(int) 部分,這段程序做什么用顯而易見。htmlspecialchars() 使得 HTML 之中的特殊字符被正確的編碼,從而不會(huì)被使用者在頁面注入 HTML 標(biāo)簽或者 Javascript 代碼。例如 age 字段,我們明確知道他是一個(gè)數(shù)值,因此我們將它轉(zhuǎn)換為一個(gè)int來自動(dòng)的消除任何不必要的字符。也可以使用 PHP 的 filter 擴(kuò)展來自動(dòng)完成該工作。PHP 將自動(dòng)設(shè)置 $_POST['name']$_POST['age'] 變量。在這之前我們使用了超全局變量 $_SERVER,現(xiàn)在我們引入了超全局變量 $_POST,它包含了所有的 POST 數(shù)據(jù)。請(qǐng)注意我們的表單提交數(shù)據(jù)的方法(method)。如果使用了 GET 方法,那么表單中的信息將被儲(chǔ)存到超全局變量 $_GET 中。如果并不關(guān)心請(qǐng)求數(shù)據(jù)的來源,也可以用超全局變量 $_REQUEST,它包含了所有 GET、POST、COOKIE 和 FILE 的數(shù)據(jù)。

也可以在 PHP 中處理 XForms 的輸入,盡管用戶可能更喜歡使用長(zhǎng)久以來支持良好的 HTML 表單。XForms 目前還不適合初學(xué)者使用,但是用戶可能對(duì)它感興趣。手冊(cè)中在“特點(diǎn)”一章有一節(jié)對(duì)如何處理從 XForum 接收到的數(shù)據(jù)進(jìn)行了簡(jiǎn)短的介紹。