国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

結(jié)合PHP使用HTML表單(2)

2024-05-04 22:53:42
字體:
供稿:網(wǎng)友
清單 2 中的表示法當(dāng)然是方便的,但它僅在 php 偽指令 register_globals 被設(shè)置為 on 時才可用。在版本 4.2 以前,這是缺省設(shè)置,許多 php 開發(fā)人員甚至沒有意識到有這樣的問題。然而,從版本 4.2 開始,register_globals 的缺省設(shè)置是 off,在此情況下,該表示法不能正常工作,因為不再用適當(dāng)?shù)闹祫?chuàng)建并初始化變量。

然而,您可以用其它的方法初始化這些變量。第一個方法是更改 register_globals 的值。許多使用共享服務(wù)器的開發(fā)人員無權(quán)為整個服務(wù)器更改該值,但可以針對某個特定站點改變行為。如您有 .htaccess 文件的訪問權(quán),您可以通過添加以下偽指令啟用 register_globals:


 

php_flag register_globals on




鑒于對該特性是否可用的不確定性,建議開發(fā)人員最好不要使用或依靠這種獲取變量的方法。那么您有什么選擇呢?

如果您的系統(tǒng)運行的是版本 4.1 或更高版本,則您的另一個選擇是使用 import_request_variables() 有選擇地注冊全局變量集合。您可以使用該函數(shù)導(dǎo)入 get、post 和 cookie 值,而且如果您愿意的話,還可以給每項添加前綴。例如:


 

<?php

import_request_variables(gp, "formval_");

echo "ship = ".$formval_ship;

echo "<br />";

echo "tripdate = ".$formval_tripdate;

echo "<br />";

echo "exploration = ".$formval_exploration;

echo "<br />";

echo "contact = ".$formval_contact;

?>




這里,導(dǎo)入了 get 和 post 值 — 使用 c 來導(dǎo)入 cookie 值 — 而且由于 p 跟在 g 之后,所以 post 值將覆蓋同名的 get 值。

但如果您象許多開發(fā)人員一樣沒有運行版本 4.1 或更高版本,那怎么辦呢?

訪問表單值集合



對于那些運行較早版本或不愿使用全局變量的人來說,可以選擇使用 $http_get_vars 和 $http_post_vars 數(shù)組。盡管并不贊成使用這些集合,但它們?nèi)匀豢捎茫胰员粡V泛使用。當(dāng)真的不再使用它們時,將用版本 4.1 中添加的 $_get 和 $_post 數(shù)組替代它們。

這兩類數(shù)組的類型都是散列表(hash table)。散列表是通過字符串值而不是整數(shù)來建立索引的數(shù)組。使用表單時,可以通過值的名稱來訪問值,如清單 3 所示:


 

清單 3. 通過散列表訪問表單值

<?

$ship_value = $http_get_vars['ship'];

echo $ship_value;

echo "<br />";

$tripdate_value = $http_get_vars['tripdate'];

echo $tripdate_value;

echo "<br />";

$exploration_value= $http_get_vars['exploration'];

echo $exploration_value;

echo "<br />";

$contact_value = $http_get_vars['contact'];

echo $contact_value;

?>




使用該方法,您可以通過名稱來檢索每個字段的值。

單名,多值



到現(xiàn)在為止,每個名稱僅對應(yīng)一個值。如果有多個值會怎樣?例如,crew species 列表框允許用名稱 crew 提交多個值。

理想情況下,您希望將這些值作為數(shù)組使用,這樣就可以顯式地檢索它們。要實現(xiàn)這一點,您必須對 html 頁面稍加改動。要作為數(shù)組提交的字段應(yīng)該用方括號命名,如 crew[] 中:


 

清單 4. 修改 html 頁面

...

<td>

<select name="crew[]" multiple="multiple">

<option value="xebrax">xebrax</option>

<option value="snertal">snertal</option>

<option value="gosny">gosny</option>

</select>

</td>

...




一旦您作出更改,檢索表單值實際上產(chǎn)生數(shù)組:


 

清單 5. 將變量作為數(shù)組訪問

...

$crew_values = $http_get_vars['crew'];

echo "0) ".$crew_values[0];

echo "<br />";

echo "1) ".$crew_values[1];

echo "<br />";

echo "2) ".$crew_values[2];

...




現(xiàn)在,提交頁面后會顯示多個值:


 

0) snertal

1) gosny

2)




首先要注意這是一個下標(biāo)從 0 開始的數(shù)組。第一個遇到的值在位置 0 中,接下來的值在位置 1,以此類推。在本例中,我只提交了兩個值,所以第三項為空。

通常,您不知道將提交多少項,因此您可以利用它是數(shù)組這一事實使用 sizeof() 函數(shù)來確定提交了多少值,而不必直接調(diào)用每一項:


 

清單 6. 確定數(shù)組的大小

...

for ($i = 0; $i < sizeof($crew_values); $i++) {

echo $crew_values[$i];

echo "<br />";

}

...




然而,有時問題不是值太多,而是根本沒有



發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 蒙山县| 靖州| 洮南市| 仁怀市| 香格里拉县| 新丰县| 大方县| 乌拉特中旗| 长春市| 定西市| 苏尼特左旗| 东源县| 新源县| 高州市| 成武县| 上饶市| 大连市| 南投县| 比如县| 济阳县| 永泰县| 策勒县| 十堰市| 马边| 临朐县| 庆城县| 新乐市| 木兰县| 阳东县| 常宁市| 玉树县| 开鲁县| 曲周县| 崇明县| 龙游县| 仪征市| 且末县| 江山市| 当雄县| 扎赉特旗| 额济纳旗|