注意:不使用jquery或javascript validate
如何使用同一名称的多个输入进行验证?

<form action="" method="post"">
Product1 <input type="text" name="your_product[]"> <br>
Product2 <input type="text" name="your_product[]"> <br>
.....
Product N <input type="text" name="your_product[]">
<input type="submit"
</form>

菲律宾比索
if($_POST)
{
    $error = "";

   for($i=0; $i < count($_POST['your_product']); $i++)
   {
      if($_POST['your_product'][$i] == "")
      {
         $error = "Please fill your product";

      }
      else
      {
          $_SESSION['product'][$i] = $_POST['your_product'][$i];
      }
   }
}

问题:如果用户填充第一个输入(但不填充第二个输入),则第一个值仍包含to session。
如果他忘记填写下一个输入,我想停止第一个包含会话的过程。
我该怎么办?

最佳答案

有两种选择:
1)只有在知道没有错误的情况下才更新会话;首先在另一个变量中保持任何更新

 if($_POST) {
     $error = "";
     $aToUpdate = [];

     for($i=0; $i < count($_POST['your_product']); $i++) {
         if($_POST['your_product'][$i] == "") {
             $error = "Please fill your product";
         } else {
             $aToUpdate[$i] = $_POST['your_product'][$i];
         }
     }
     if (strlen($error) == 0) {
         $_SESSION['product'] = $aToUpdate;
     }
 }

2)先进行两次验证(我的首选),如果验证通过,则进行处理
 if($_POST) {
     // Validate first
     $error = "";
     for($i=0; $i < count($_POST['your_product']); $i++) {
         if($_POST['your_product'][$i] == "") {
             $error = "Please fill your product";
         }
     }

     // If not errors, then update everything.
     if (strlen($error) == 0) {
         for($i=0; $i < count($_POST['your_product']); $i++) {
             $_SESSION['product'] = $_POST['your_product'][$i];
             }
         }
     }
 }

关于php - PHP-如何验证具有相同名称的多个输入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41710507/

10-12 07:08