簡體   English   中英

PHP中的表單處理

[英]Form processing in PHP

關於某些代碼,我有三個問題:

  1. isset($_POST['submit'])知道何時單擊了提交按鈕。 我不了解背后的機制嗎?
  2. 為什么每個輸入元素都使用一個具有artist[]值且帶有方括號的名稱? 我們是在HTML中定義數組嗎?
  3. 有人告訴我輸入元素的名稱值必須與$_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檢查數據以查看其中是否包含提交按鈕的名稱/值。

  1. 為什么每個輸入元素都使用帶有方括號的“ 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']以得到兩個項目的數組,可以依次循環。

  1. $_POST['submit']表單並且存在名稱為“ submit”的輸入字段時設置$_POST['submit'] 在您的情況下, <input type='submit'>的名稱為“ submit”。 (您也可以使用保存值的​​$ _POST ['submit']獲取提交按鈕的值)。

  2. 名稱具有artist [],因為它聲明了在處理表單時要傳遞的數組。 您可以使用它來將值分組在一起。 通常,它是由artist[name]artist[album]等完成的,可以在PHP中使用_POST['artist']['name']進行引用。

  3. 從2開始進行排序。使用空方括號會使數組不相關。 您將第一個字段引用為$_POST['artist'][0] ,下一個$_POST['artist'][1]

給所有字段指定相同的名稱后,將構建一個數組,您可以像3一樣在PHP中引用它。

  1. 提交按鈕實際上是提交表單,它本身就是一個POST值。 因此,如果已設置,則表示表單已提交。 不過,最好檢查$_SERVER['REQUEST_METHOD']是否等於'POST'。

  2. 是的,它定義了一個“數組”,但這是錯誤的,因為在最后四個復選框中沒有方括號。

  3. $_POST['artist']將包含一個帶有所有復選框值的數組(是或否,取決於是否分別選中它們)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM