@PaffosONE

Прошу взглянуть на мой код и подсказать где я возможно не прав?

Прошу взглянуть на мой код и подсказать где я возможно не прав.
В коде пытаюсь загрузить аву пользователя, возможно где-то допустил ошибку или возможность обхода.

index.php
<form method="POST" enctype="multipart/form-data">
  <input type="file" name="avatar">
  <button type="submit" name="send">Send</button>
</form>


<?php
require_once 'func.php';

if( isset($date['send']))
{
  if(isset($file))
  {
  debug( $file['avatar'] ) ;
  img_save( $file['avatar']['name'],$file['avatar']['tmp_name'],$file['avatar']['error'],$file['avatar']['size'] );
  }
}

?>


func.php

<?php

$date = $_POST;
$file = $_FILES;

function debug($array)
{
echo "<pre>";
print_r($array);
echo "</pre>";
}

function img_save($name,$path,$error,$size)
{

$error_report = [];
$format = [];


  if($size > 250000 )
  {
  $error_report[] = "Размер файла слишком большой!";
  }
  
  if($error >0)
  {
    $error_report[] = "Файл поврежден!";
  }

  if( exif_imagetype($path) == IMAGETYPE_JPEG )
  {
  $format[] = ".jpg";
  }
  elseif( exif_imagetype($path) == IMAGETYPE_PNG )
  {
  $format[] = ".png";
  }
  else
  {
   $error_report[] = "Формат файла не подходит используйте .png или .jpeg !";
  }


  if(count($error_report) > 0 )
  {
    echo "Ошибка: " . array_shift($error_report);
    die();
  }
  else
  {
    $permitted_chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    move_uploaded_file($path,"files/" . substr(str_shuffle($permitted_chars), 0, 16).array_shift($format));
  }

}
  • Вопрос задан
  • 100 просмотров
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
<input type="file" name="avatar" accept="image/gif, image/jpeg">
облегчает человеку выбор верного формата

if(isset($file))не гарантирует что файл загрузился, по этому нужно проверять еще и еррор, перед тем как передавать несуществующие свойства в функцию

$permitted_chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
ваще жесть, про хэш не слышали? Тем более еще и в разных регистрах называть файлы...

В остальном обычный такой код из начала нулевых, пхп4 и вот это все...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы