Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Валидация на файл при upload

Featured Replies

Здравейте.

Имам една upload форма, която позволява да се качват или .zip или .rar файлове. Направил съм проверка за вида на файла, разширението му както и големината. Но също така качва и произволен файл е сменено разширение на .zip или .rar. Как мога да проверя дали са истински .zip или .rar файлове или са преобразувани?

Валидирай по mime type. Имаш няколко варианта, разгледай mime_content_type   finfo_file , другия вариант е да викаш примерно "file -bi filename.{ext}", като го пуснеш през system() (това обаче не е portable решение, и не забравяй ако го ползваш да ползваш и escapeshellcmd примерно).

Иначе можеш да разгледаш mime типовете в /etc/mime.types или примерно online https://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types

Има и някой други неща за upload-а на файлове, които зависят повече от настройката на web server-a, който ги hande-ва Има доста информация в интернет, прочети малко по темата.

  • Автор

Здравей.

Правя проверки на файла по mime type и по разширението му. Проблема идва ако самия файл е с ръчно променено разширение. Като му се смени разширението се сменява и mime type и разширението. Въпроса ми беше дали има начин да се хване точно това. Смисъл дали са истински рарове/зипове или са такива файлове които са преобразувани.

Ето го и кода където използвам

 

$errors = "";
$success = "";

$accepted_types = array(
    'application/zip',
    'application/x-zip-compressed',
    'multipart/x-zip',
    'application/x-compressed',
    'application/x-rar-compressed',
);

if (isset($_FILES['userfile'])) {

    $file_name = $_FILES['userfile']['name'];
    $file_size = $_FILES['userfile']['size'];
    $file_tmp = $_FILES['userfile']['tmp_name'];
    $file_type = $_FILES['userfile']['type'];
    $file_exp = strtolower(end(explode('.', $_FILES['userfile']['name'])));

    $expension = array("rar", "zip");

    if (in_array($file_exp, $expension) === FALSE) {
        $errors .= 'Файлът не може да бъде качен. Моля, качи 1 архивиран файл във формат .zip, .rar!';
    }
    
    if (in_array($file_type, $accepted_types) === FALSE){
        $errors .= 'Файлът не е от тип .zip или .rar. Моля, качи 1 архивиран файл във формат .zip, .rar!';
    }

    if (empty($errors) == true) {
        move_uploaded_file($file_tmp, 'files/' . $file_name);
        
        $success = "Благодарим ти!<br /><br />
            Успешно качи своя файл.<br />";
    }
}

 

Погледни какво съм ти писал.

Никога не проверявай mime type който взимаш от $_FILE това идва от потребителя и не можеш да разчиташ на него!

  • Автор

ОК. Благодаря сега ще го мисля пак по насоките ти.

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    25%
    Дарени 252.69 EUR от нужните 1,000.00 EUR

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.