我正在尝试使用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.';
}
但这不起作用。请有人帮我解决这个问题吗?
非常感谢,哈利
答案 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.";
}
}
这应该有效。谢谢。