View file down/add_file.php

File size: 6.88Kb
<?php

require_once ('../includes/start.php');
require_once ('../includes/functions.php');
require_once ('../includes/header.php');
include_once ('../themes/header.php');

include_once ('core/fun.php');

$id = (isset($_GET['id'])) ? abs(intval($_GET['id'])) : '';
$act = isset($_GET['act']) ? check($_GET['act']) : '';
if (is_user()) {

    switch ($act):
        default :
            $dir = DB::run()->queryFetch("SELECT * FROM `downloads_category` WHERE id = ? AND upload != 1;", array ($_GET['id']));

            if (!empty($dir)) {
                echo '<div class="form">';
                echo '<form action="add_file.php?act=upload&amp;id=' . $dir['id'] . '&amp;uid=' . $_SESSION['token'] . '" method="post" enctype="multipart/form-data">';
                echo 'Категория: <b>' . $dir['name'] . '</b><br />';
                echo 'Название файла:*:<br />';
                echo '<input type="text" name="name" size="50" maxlength="50" /><br />';
                echo 'Файл (' . $config['allowextload'] . '):<br /><input type="file" name="loadfile" /><br />';
                echo 'Описание*:<br />';
                echo '<textarea cols="65" rows="5" name="description"></textarea><br />';
                echo '<input value="Добавить" type="submit" /></form></div><br />';
            } else {
                show_error('Папка не найдена, либо не предназначена для выгрузки файлов пользователями в нее');
            }
            break;

        case 'upload':

            $uid = check($_GET['uid']);
            $id = abs(intval($_GET['id']));
            $name = check($_POST['name']);
            $description = check($_POST['description']);

            //var_dump($_FILES);

            if ($uid == $_SESSION['token']) {
                if (utf_strlen($name) >= 5 && utf_strlen($name) <= 50) {
                    if (utf_strlen($description) <= 5000) {
                        if (is_uploaded_file($_FILES['loadfile']['tmp_name'])) {
                            $filename = check(strtolower($_FILES['loadfile']['name']));

                            if (strlen($filename) <= 80) {
                                if (preg_match('|^[a-z0-9_\.\-]+$|i', $filename)) {
                                    $arrext = explode(',', $config['allowextload']);
                                    $ext = getExtension($filename);

                                    if (in_array($ext, $arrext) && $ext != 'php') {
                                        if (!preg_match('/\.(php|pl|cgi|phtml|htaccess)/i', $filename)) {
                                            if ($_FILES['loadfile']['size'] > 0 && $_FILES['loadfile']['size'] <= $config['fileupload']) {
                                                $description = no_br($description);
                                                DB::run()->query("INSERT INTO `downloads_files` (`id`, `category`, `title`, `date`, `author`, `description`, `size`) VALUES (?, ?, ?, ?, ?, ?, ?);", array (null, $id, $name, SITETIME, $log, $description, $_FILES['loadfile']['size']));
                                                $file_id = DB::run()->lastInsertId();

                                                $directory_path = get_path($id);
                                                $realpath = get_realpath($directory_path);
                                                $realpath = ($realpath != '' ? $realpath . '/' : '') . ($id == 0 ? '' : $id . '/');

                                                // Создание папки для файла
                                                mkdir(BASEDIR . '/down/files/' . $realpath . $file_id);
                                                chmod(BASEDIR . '/down/files/' . $realpath . $file_id, 0777);
                                                $path_to_file = 'down/files/' . ($realpath != '' ? $realpath : '') . $file_id . '/';
                                                $file_path = BASEDIR . '/' . $path_to_file . $_FILES['loadfile']['name'];

                                                move_uploaded_file($_FILES['loadfile']['tmp_name'], $file_path);
                                                DB::run()->query("UPDATE `downloads_files` SET `file` = ?, `path_to_file` = ? WHERE `id` = ?", array ($filename, $path_to_file, $file_id));

                                                $_SESSION['note'] = 'Файл успешно загружен!';
                                                redirect("get_file.php?id=" . $file_id);
                                            } else {
                                                show_error('Ошибка! Максимальный размер загружаемого файла ' . formatsize($config['fileupload']) . '!');
                                            }
                                        } else {
                                            show_error('Ошибка! В названии файла присутствуют недопустимые расширения!');
                                        }
                                    } else {
                                        show_error('Ошибка! Недопустимое расширение файла!');
                                    }
                                } else {
                                    show_error('Ошибка! В названии файла присутствуют недопустимые символы!');
                                }
                            } else {
                                show_error('Ошибка! Слишком длинное имя файла (не более 50 символов)!');
                            }
                        } else {
                            show_error('Ошибка! Не удалось загрузить файл!');
                        }
                    } else {
                        show_error('Ошибка! Слишком длинный или короткий текст описания (от 10 до 5000 символов)!');
                    }
                } else {
                    show_error('Ошибка! Слишком длинное или короткое название (от 5 до 50 символов)!');
                }
            } else {
                show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
            }

            echo '<img src="/images/img/back.gif" alt="image" /> <a href="add_file.php?id=' . $id . '">Вернуться</a><br />';

            break;

    endswitch;
} else {
    show_login('Вы не авторизованы, для добавления файла, необходимо');
}
include_once ('../themes/footer.php');