能較容易地對用戶通過 HTML 表單提交的信息進行操作的能力一直是 php(做為現在的主流開發語言) 的優勢之一。事實上,php(做為現在的主流開發語言) 版本 4.1 添加了幾個訪問該信息的新方法並有效地除去了以前版本中最常用的一個方法。本文研究了使用 HTML 表單上提交的信息的不同方法,並同時使用了 php(做為現在的主流開發語言) 較早的版本和較新的版本。本文首先從研究單個值開始,然後構建可以一般性地訪問任何可用的表單值的頁面。
注:本文假定您對運行 php(做為現在的主流開發語言) 版本 3.0 或更高版本的 Web 服務器具有訪問權。您需要對 php(做為現在的主流開發語言) 本身以及創建 HTML 表單有基本了解。
HTML 表單
在閱讀本文的過程中,您將看到不同類型的 HTML 表單元素如何提供 php(做為現在的主流開發語言) 能夠訪問的信息。針對本示例,我使用了一個簡單的信息表單,它由兩個文本域、兩個復選框和一個允許多項的選擇框組成:
清單 1. HTML 表單 <html>
<head><title>Tour Information</title></head>
<body>
<h2>Mission Information</h2>
<form action="formaction.php(做為現在的主流開發語言)">
<table width="100%">
<tr><td>Ship Name:</td><td><input type="text" name="ship" /></td></tr>
<tr><td>Trip Date:</td><td><input type="text" name="tripdate" /></td></tr>
<tr><td colspan="2">Mission Goals:</td></tr>
<tr>
<td><input type="checkbox" name="exploration" value="yes" />
Exploration</td>
<td><input type="checkbox" name="contact" value="yes" />
Contact</td>
</tr>
<tr>
<td valign="top">Crew species: </td>
<td>
<select name="crew" multiple="multiple">
<option value="xebrax">Xebrax</option>
<option value="snertal">Snertal</option>
<option value="gosny">Gosny</option>
</select>
</td>
</tr>
<tr><td colspan="2" align="center"><input type="submit" /></td></tr>
</table>
</form>
</body>
</html>
在沒有指定方法的情況下,該表單使用缺省方法 GET,浏覽器用它將表單值附加到 URL,如下所示:
http://www.vanguardreport.com/formaction.php(做為現在的主流開發語言)?
ship=Midnight+Runner&tripdate=12-15-2433&exploration=yes&crew=snertal&crew=gosny
圖 1 顯示表單本身。
圖 1. HTML 表單
老辦法:訪問全局變量
清單" 2 中顯示的代碼將表單值作為全局變量處理:
清單 2. 作為全局變量的表單值
<?php(做為現在的主流開發語言)
echo "Ship = ".$ship;
echo "<br />";
echo "Tripdate = ".$tripdate;
echo "<br />";
echo "Exploration = ".$exploration;
echo "<br />";
echo "Contact = ".$contact;
?>
生成的 Web 頁面顯示提交的值:
Ship = Midnight Runner
Tripdate = 12-15-2433
Exploration = yes
Contact =
(正如您稍後將看到的那樣,Contact 沒有值,因為沒有選中那個框)。
清單 2 中的表示法當然是方便的,但它僅在 php(做為現在的主流開發語言) 偽指令 register_globals 被設置為 on 時才可用。在版本 4.2 以前,這是缺省設置,許多 php(做為現在的主流開發語言) 開發人員甚至沒有意識到有這樣的問題。然而,從版本 4.2 開始,register_globals 的缺省設置是 off,在此情況下,該表示法不能正常工作,因為不再用適當的值創建並初始化變量。