COVID2019 и это вот все. Друзья, вся эта история начинает плохо пахнет. Мойте руки, не ходите в люди. Отложите все плановые покупки и положите в носок заначку. Заприте ваших родителей, бабушек-дедушек на даче. Лучше перебдеть чем недобдеть. Берегите себя!

Warning: Invalid argument supplied for foreach() in


oliver1992

Recommended Posts

Здравствуйте! Помогите решить ошибку. Есть форма, она отправляется без перезагрузки. В форме присутствует мультизагрузка файлов(фото), при обработке формы в ответе появляется эта ошибка. Пересмотрел кучу форумов, пробовал делать как советовали, результат 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 работает нормально.

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

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

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

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.