我在网站上有图片上传表单,允许用户上传他们的图片。现在我试图尽可能地保护它。使用php_image_magician ..
这就是我查看图片(代码的一部分)的地方
for ($i = 0; $i < count($_FILES["user_files"]["name"]); $i++) {
if ($_FILES["user_files"]["name"][$i] <> "") {
$image_mime = strtolower(image_type_to_mime_type(exif_imagetype($_FILES["user_files"]["tmp_name"][$i])));
$tempFile = $_FILES["user_files"]["tmp_name"][$i];
$getImgSize = getimagesize($tempFile);
// if valid image type then upload
if (in_array($image_mime, $valid_image_check, $getImgSize)) {
....
// upload image
}
Whit image_type_to_mime_type
没有问题。现在我为getimagesize
添加了这一行,但我在if (in_array($image_mime, $valid_image_check, $getImgSize))
- Warning: in_array() expects parameter 3 to be boolean, array given in
收到错误。参数3是$getImgSize
$tempFile = $_FILES["user_files"]["tmp_name"][$i];
$getImgSize = getimagesize($tempFile);
var_dump($_FILES["user_files"]["tmp_name"][$i])
返回string(14) "/tmp/phpkBZOW3"
表单接受多个图片,这就是为什么for
和[$i]
的原因。这可能是什么问题?
答案 0 :(得分:0)
你可以这样试试。但正如@Paul所说,检查documentation。
for ($i = 0; $i < count($_FILES["user_files"]["name"]); $i++) {
if ($_FILES["user_files"]["name"][$i] <> "") {
$image_mime = strtolower(image_type_to_mime_type(exif_imagetype($_FILES["user_files"]["tmp_name"][$i])));
$getImageFile = getimagesize($_FILES["user_files"]["tmp_name"][$i]);
if(!empty($getImageFile)){
echo 'Please ensure you are uploading an image.';
exit;
}
// if valid image type then upload
if (in_array($image_mime, $valid_image_check)) {