清單2 中的表示法當然是方便的,但它僅在 php 偽指令 register_globals 被設定為 on 時才可用。在版本 4.2 以前,這是預設設定,許多 php 開發人員甚至沒有意識到有這樣的問題。然而,從版本 4.2 開始,register_globals 的預設設定是 off,在此情況下,該表示法不能正常工作,因為不再用適當的值建立並初始化變數。
然而,您可以用其它的方法初始化這些變數。第乙個方法是更改register_globals 的值。許多使用共享伺服器的開發人員無權為整個伺服器更改該值,但可以針對某個特定站點改變行為。如您有 .htaccess 檔案的訪問權,您可以通過新增以下偽指令啟用 register_globals:
php_flagregister_globals on
鑑於對該特性是否可用的不確定性,建議開發人員最好不要使用或依靠這種獲取變數的方法。那麼您有什麼選擇呢?
如果您的系統執行的是版本 4.1 或更高版本,則您的另乙個選擇是使用 import_request_variables() 有選擇地註冊全域性變數集合。您可以使用該函式匯入 get、post 和 cookie 值,而且如果您願意的話,還可以給每項新增字首。例如:
<?php
import_request_variables(gp, "formval_");
echo "ship = ".$formval_ship;
echo "
";echo "tripdate = ".$formval_tripdate;
echo "
";echo "exploration = ".$formval_exploration;
echo "
";echo "contact = ".$formval_contact;
?>
這裡,匯入了get 和 post 值 — 使用 c 來匯入 cookie 值 — 而且由於 p 跟在 g 之後,所以 post 值將覆蓋同名的 get 值。
但如果您象許多開發人員一樣沒有執行版本4.1 或更高版本,那怎麼辦呢?
訪問表單值集合
對於那些執行較早版本或不願使用全域性變數的人來說,可以選擇使用$http_get_vars 和 $http_post_vars 陣列。儘管並不贊成使用這些集合,但它們仍然可用,而且仍被廣泛使用。當真的不再使用它們時,將用版本 4.1 中新增的 $_get 和 $_post 陣列替代它們。
這兩類陣列的型別都是雜湊表(hash table)。雜湊表是通過字串值而不是整數來建立索引的陣列。使用表單時,可以通過值的名稱來訪問值,如清單 3 所示:
清單3. 通過雜湊表訪問表單值
使用該方法,您可以通過名稱來檢索每個欄位的值。
單名,多值
到現在為止,每個名稱僅對應乙個值。如果有多個值會怎樣?例如,crew species 列表框允許用名稱 crew 提交多個值。
理想情況下,您希望將這些值作為陣列使用,這樣就可以顯式地檢索它們。要實現這一點,您必須對html 頁面稍加改動。要作為陣列提交的字段應該用方括號命名,如 crew 中:
清單 4. 修改 html 頁面
...xebrax">xebrax
snertal">snertal
gosny">gosny
...
html表單使用
1 一般的使用者名稱 密碼實現 使用者名稱 密碼 2 單選框的實現 性別 男 女注 此處使用checked屬性是為了預設選擇性別為 男。3 核取方塊的使用 a 顯示所有選項的核取方塊 愛好 看電影 聽 運動 b 下拉列表選項的核取方塊 所在年級 注 此處的size值為顯示到頁面上的元素值 百傑1部 ...
html學習 2 表單
表單元素格式使用者名稱 text name username 密碼 password name pwd 男 radio name gender value 0 checked 女 radio name gender value 1 愛好 checkbox name hobby value 0 籃球 ...
php實現驗證碼與表單的結合使用
表單 formidentifyingcode.php 驗證碼生成頁 identifyingcode.php session start header content type text html charset utf 8 error reporting e all e notice 表示提示除去 ...