Warning: Invalid argument supplied for foreach() in


oliver1992
 Поделиться

Рекомендуемые сообщения

Здравствуйте! Помогите решить ошибку. Есть форма, она отправляется без перезагрузки. В форме присутствует мультизагрузка файлов(фото), при обработке формы в ответе появляется эта ошибка. Пересмотрел кучу форумов, пробовал делать как советовали, результат 0. Самое главное, если сделать обработку формы напрямую через action, все работает. Ясно одно, что в массиве нет ничего. 

 

обработчик
...
if (isset($_POST['rand'])){
$pic_weight = 3000;
$pic_height = 3000;
if (isset($_FILES)) {
foreach ($_FILES['file']['name'] as $k=>$v)
{
$uploaddir = "images/images_avto/";
$apend=date('YmdHis').rand(100,1000).'.png';
$uploadfile = "$uploaddir$apend";
 
if($_FILES['file']['type'][$k] == "image/gif" || $_FILES['file']['type'][$k] == "image/png" ||
$_FILES['file']['type'][$k] == "image/jpg" || $_FILES['file']['type'][$k] == "image/jpeg")
{
      
$blacklist = array(".php", ".phtml", ".php3", ".php4");
foreach ($blacklist as $item)
{
if(preg_match("/$item\$/i", $_FILES['file']['name'][$k]))
{
echo "<center>Нельзя загружать скрипты.</center>";
exit;
}
 }
	
 
if (move_uploaded_file($_FILES['file']['tmp_name'][$k], $uploadfile))
      {
       
$size = getimagesize($uploadfile);
        
if ($size[0] < $pic_weight && $size[1] < $pic_height)
        {
         
 
          echo "Файл загружен";
	  
добавление в базу полного пути изобрражения
  
        }
		 
	else
        {
          echo "<center><br>Размер пикселей превышает допустимые нормы.</center>";
          unlink($uploadfile);
        }
      }
      else
        echo "<center><br>Файл не загружен, вернитесь и попробуйте еще раз.</center>";
    }
    else
      echo "<center><br>Можно загружать только изображения в форматах jpg, jpeg, gif и png.</center>";
  
  }
 

}

}
.....
форма
<form   enctype="multipart/form-data" method="POST" name="form_upload" id="formx" action="javascript:void(null);" onsubmit="call()">
			<input name='file[]' type='file'  />
....

 

Ссылка на комментарий
Поделиться на других сайтах

... и можете сразу забыть про безопасность

Советую вначале ознакомиться с "безопасностью",  а потом уже писать такие "скрипты"

 

Первый же вектор атаки хакеров будет именно на возможность загрузки пользователями файлов

В вашем случае у них успех будет 100%

Ссылка на комментарий
Поделиться на других сайтах

Ну во-первых я не говорил, что это реальный скрипт. Мне нужно понять принцип возникновения этой ошибки. Сталкиваюсь с ней в первый раз. Что такое загрузка и как важен факт безопасности в этом случае - мне объяснять не надо.

Ссылка на комментарий
Поделиться на других сайтах

содержимого функции call() я не вижу

 

9 часов назад, oliver1992 сказал:

Что такое загрузка и как важен факт безопасности в этом случае - мне объяснять не надо.

 

надо или нет, но у меня есть ощущение, что вам стоит почитать про FormData:

https://developer.mozilla.org/ru/docs/Web/API/FormData

Ссылка на комментарий
Поделиться на других сайтах

Этот пример взят с другого форума, с подобной ошибкой, что заладили то. Если никто не может объяснить принципа её возникновения, мне здесь делать нечего. Я спрашиваю почему когда обработка без перезагрузки она появляется, а прямиком через action работает нормально.

Ссылка на комментарий
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сейчас и зарегистрироваться позже. Если у вас есть учётная запись, войдите, чтобы публиковать под своей учётной записью.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Показать вместо этого как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Нельзя вставлять изображения напрямую. Загрузите или вставьте изображения по URL.

 Поделиться