PHP 一個(gè)很有用的特點(diǎn)體現(xiàn)在它處理 PHP 表單的方式。需要理解的非常重要的原理,是表單的任何元素都在 PHP 腳本中自動(dòng)生效。請(qǐng)參閱本手冊(cè)中“PHP 的外部變量”以獲取關(guān)于在 PHP 中使用表單的詳細(xì)信息及范例。以下是 HTML 表單的范例:
示例 #1 一個(gè)簡單的 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 的輸入,盡管用戶可能更喜歡使用長久以來支持良好的 HTML 表單。XForms 目前還不適合初學(xué)者使用,但是用戶可能對(duì)它感興趣。手冊(cè)中在“特點(diǎn)”一章有一節(jié)對(duì)如何處理從 XForum 接收到的數(shù)據(jù)進(jìn)行了簡短的介紹。