[英]Form processing in PHP
關於某些代碼,我有三個問題:
isset($_POST['submit'])
知道何時單擊了提交按鈕。 我不了解背后的機制嗎? artist[]
值且帶有方括號的名稱? 我們是在HTML中定義數組嗎? $_POST
變量的名稱相匹配。 但是在這種情況下, $_POST
使用的artist
沒有方括號。 這里發生了什么 ? 。
<html>
<head></head>
<body>
<?php
// check for submit
if (!isset($_POST['submit'])) {
// and display form
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
<input type="checkbox" name="artist[]" value="Bon Jovi">Bon Jovi
<input type="checkbox" name="artist[]" value="N'Sync">N'Sync
<input type="checkbox" name="artist" value="Boyzone">Boyzone
<input type="checkbox" name="artist" value="Britney Spears">Britney Spears
<input type="checkbox" name="artist" value="Jethro Tull">Jethro Tull
<input type="checkbox" name="artist" value="Crosby, Stills & Nash">Crosby, Stills & Nash
<input type="submit" name="submit" value="Select">
</form>
<?php
} else {
// or display the selected artists
// use a foreach loop to read and display array elements
if (is_array($_POST['artist'])) {
echo 'You selected: <br />';
foreach ($_POST['artist'] as $a) {
echo "<i>$a</i><br />";
}
} else {
echo 'Nothing selected';
}
}
?>
</body>
</html>
1. isset($ _ POST ['submit'])如何知道何時單擊了提交按鈕。
單擊提交按鈕會使瀏覽器提交表單(並在數據中包含單擊的提交按鈕的名稱/值)。
提交表單將創建一個HTTP請求。
除了作為對服務器收到HTTP請求的響應之外,PHP不會運行。
PHP檢查數據以查看其中是否包含提交按鈕的名稱/值。
- 為什么每個輸入元素都使用帶有方括號的“ artist []”值的名稱?
大多數表單處理庫將提供一種訪問與數組同名的多個元素的方法。 PHP要求名稱必須以[]
結尾,然后再允許。
有人告訴我輸入元素的名稱值必須與$ _POST變量的名稱相匹配。 但是在這種情況下,$ _ POST使用的是“藝術家”,沒有方括號。 這里發生了什么?
PHP的表單數據解析器將[]
視為創建數組的消息,而不是名稱的一部分。 真奇怪
但是,它確實允許您定義以下內容:
<input type="checkbox" name="foo[bar][]" value="1">
<input type="checkbox" name="foo[bar][]" value="1">
<input type="checkbox" name="foo[bar][]" value="1">
<input type="checkbox" name="foo[oat][]" value="1">
<input type="checkbox" name="foo[oat][]" value="2">
<input type="checkbox" name="foo[oat][]" value="3">
然后循環$_POST['foo']
以得到兩個項目的數組,可以依次循環。
$_POST['submit']
表單並且存在名稱為“ submit”的輸入字段時設置$_POST['submit']
。 在您的情況下, <input type='submit'>
的名稱為“ submit”。 (您也可以使用保存值的$ _POST ['submit']獲取提交按鈕的值)。
名稱具有artist [],因為它聲明了在處理表單時要傳遞的數組。 您可以使用它來將值分組在一起。 通常,它是由artist[name]
, artist[album]
等完成的,可以在PHP中使用_POST['artist']['name']
進行引用。
從2開始進行排序。使用空方括號會使數組不相關。 您將第一個字段引用為$_POST['artist'][0]
,下一個$_POST['artist'][1]
。
給所有字段指定相同的名稱后,將構建一個數組,您可以像3一樣在PHP中引用它。
提交按鈕實際上是提交表單,它本身就是一個POST值。 因此,如果已設置,則表示表單已提交。 不過,最好檢查$_SERVER['REQUEST_METHOD']
是否等於'POST'。
是的,它定義了一個“數組”,但這是錯誤的,因為在最后四個復選框中沒有方括號。
$_POST['artist']
將包含一個帶有所有復選框值的數組(是或否,取決於是否分別選中它們)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.