注意:不使用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/