PHP动态循环验证

时间:2014-01-28 20:38:07

标签: php validation

我正在尝试使用PHP动态验证此表单,因此每个文件都获得相同的验证,而不是只验证一个文件。下面是我的代码,试图更好地解释这一点。

这是for循环,它向用户输出许多<input type="file" />个字段。

$items = sanitize($_GET['item']);

for($i=1; $i<=$items; $i++) {
    echo $item = '<input type="file" name="photo'. $i .'" />';
}

这是其中一个字段的验证

$file_size = $_FILES['photo1']['size'];    
if($file_size > 10485760) {
          echo 'Photo 1 is too large. Maximium file size is 10MB.';
}

我不确定如何为for循环中的每个字段完成此验证。这是我到目前为止所尝试过的。

if($file_size.$i > 10485760) {
echo 'Photo '. $i .' is too large. Please choose a smaller file.';
}

但这不起作用。请有人帮我解决这个问题吗?

非常感谢,哈利

3 个答案:

答案 0 :(得分:0)

尝试类似:

foreach ($_FILES as $id => $details) {
  $size = $details['size'];
  # validate...
}

答案 1 :(得分:0)

数组键可以是动态的:

for ($i = 1; $i <= $some_limit; $i++) {
   $size = $_FILES["photo{$i}"]['size'];
   if ($size > ...) { etc... }
}

使用$size . $i,您将获得第一个文件的大小,例如1024个字节,并将其与$ i值连接,例如1024 . 2,最后是10242

答案 2 :(得分:0)

输入名称可以是方括号。提交表单时,输入字段可以作为数组访问。如:

html表格:

<input type="file" name="photo[]">
<input type="file" name="photo[]">
<input type="file" name="photo[]">

PHP:

foreach($_FILES['photo'] as $key => $p) {
$file_size = $p['size'];    
if($file_size > 10485760) {
    echo "Photo $key is too large. Maximium file size is 10MB.";
}
}

这应该有效。谢谢。