Каталог файлов в универсальном каталоге-продолжение...

+22
2.13K
Понадобилось вот мне сделать на сайте каталог файлов.Нашел хороший вариант Каталога файлов.Но...
Были найдены небольшие недочеты: ссылка на скачиваемый файл была "видна" всем (и пользователям и гостям), файлы загружались не в стандартную папку upload а в images/catalog плюс файл по ссылке сайт.ру/load/url=путькфайлу не скачивается по причине того что его не видет браузер и естественно не может его скачать, и все это вкупе не есть хорошо.Решил глянуть-разобраться, ну и нашел выход из этого положения.Может кому и не понравится конечно такое...
Расписывать все я не стал: слишком долгое это дело, поэтому вы можете скачать уже готовые файлы.
P.S В файле frontend.php добавлен код прячущий ссылку на скачивание файла от гостей и не забудьте в upload создать папку files ( с вложенной в нее images (в которой medium и small))
Скачать
Отдельное СПАСИБО Mike за подсказку…
0
Слава Слава 13 лет назад #
А файлы от 1.7, или от 1.8?
+2
Александр Александр 13 лет назад #
Что-то забыл предупредить:от 1.8,но тестировалось и на 1.7 -все нормалек!
0
Слава Слава 13 лет назад #
Спасибо, работает.
0
abasia abasia 13 лет назад #
Почему то выводится вместо поля для загрузки файла второй визуальный редактор.
0
abasia abasia 13 лет назад #
Моя невнимательность, надо было из папки (шаблон) что в архиве перенести файлы в папку компонентов в шаблоне и очистить кэш, всё работает, большое спасибо.
0
artlab artlab 13 лет назад #
Хорошая работа)Может быть кто-нибудь знает,как сделать так,чтобы после удаления файла он вместе с его картинкой удалялся с сервера?
0
artlab artlab 13 лет назад #
И ещё..чтобы отображались тумбы,изменил com_catalog_view.tpl
кому надо,вот он скачать
0
artlab artlab 13 лет назад #
как бы ещё сделать загрузку файла в виде градусника,а то по браузеру пользователи не поймут...
может кто подскажет..
0
artlab artlab 13 лет назад #
Поправил модули Новое в каталоге,Популярное в каталоге,Случайное из каталога,картинки стали отображаться.
Осталось две проблемы:
1. При удалении из каталога на сервере остаются сам файл,оригинал картинки,маленькая и средняя.
2. Для каждого нового файла создаётся новая папка.
Необходимо создать задачу cron,для очистки от удалённых файлов
0
vitalson9 vitalson9 13 лет назад #
помогите решить проблему. Установил всё как указано НО при добовлении файла и скриншота файл добавляется
а скриншот добавляется только вкорневую рубрику а зайдя в файл скрина нет только одно название,при редактировании файла сверху пишит Внимание: Папка "/upload/files/images/medium" не доступна для записи! Установите права 755 на эту папку. хотя все прова выстовлены
0
artlab artlab 13 лет назад #
проверьте backend.xml и попробуйте 777 ,если хостинг отечественный.
0
vitalson9 vitalson9 13 лет назад #
вот именно что проблемма в backend.php не могу разобраться
0
artlab artlab 13 лет назад #
попробуйте по ftp проверить права и наличие файлов.При загрузке создаётся папка с номером,это для файла.
Для изображений (их 3 зачем-то,вместо двух)оригинал лежит в /images.Тумб в images/small и среднее соответственно в images/medium .Права на папки для русского хостинга 777,для зарубежного скорее 755.
Права на файлы 644.
0
vitalson9 vitalson9 13 лет назад #
хост питерский прова на папках 777 в small файлы есть в images тоже а вот в medium файлы не попадают соответствено скриншот к самому файлу и не выводится копал в backend.php не его не выходит как выводила в адменке Внимание: Папка "/upload/files/images/medium" не доступна для записи! Установите права 755 на эту папку. так и выводит кстати если прова поставить на папку small 755 то тоже начинает выводить тоесть правильно это 777
0
artlab artlab 13 лет назад #
Значит в backend.php нужно везде заменить 755 на 777.Вот часть кода
Код PHP:
			//upload image and insert record in db
			if (@move_uploaded_file($tmp_name, $_SERVER['DOCUMENT_ROOT']."/upload/files/images/$file")){
				@img_resize($_SERVER['DOCUMENT_ROOT']."/upload/files/images/$file", $_SERVER['DOCUMENT_ROOT']."/upload/files/images/small/$file.jpg", 100, 100);
				@img_resize($_SERVER['DOCUMENT_ROOT']."/upload/files/images/$file", $_SERVER['DOCUMENT_ROOT']."/upload/files/images/medium/$file.jpg", 250, 250);
                @chmod($_SERVER['DOCUMENT_ROOT']."/upload/files/images/$file", 0755);
				@chmod($_SERVER['DOCUMENT_ROOT']."/upload/files/images/small/$file.jpg", 0755);
				@chmod($_SERVER['DOCUMENT_ROOT']."/upload/files/images/medium/$file.jpg", 0644);

Это для примера.
0
artlab artlab 13 лет назад #
и в данном куске кода везде должны быть права на файлы 644.
Выложу для 1.8 сейчас свои файлы.
0
artlab artlab 13 лет назад #
Вот это у меня работает на 1.8 ,только хостинг американский
скачать
0
vitalson9 vitalson9 13 лет назад #
всё равно не выходит Вот
0
vitalson9 vitalson9 13 лет назад #
0
artlab artlab 13 лет назад #
посмотрите в backend.php вывод этого сообщения.так же в error.log
Я позже гляну.щас некогда
0
artlab artlab 13 лет назад #
вобщем.посмотрел.
На чистом icms1.8 Должно работать.значит нужно перезалить весь каталог,и после обновить архивом каталога файлов
0
Максим Шорин Максим Шорин 13 лет назад #
в этом решении существует проблема безопасности.
0
artlab artlab 13 лет назад #
какая?
0
Максим Шорин Максим Шорин 13 лет назад #
нету проверки на расширение файла, можно свободно *.php залить, шел , ни шел, что угодно
0
vitalson9 vitalson9 13 лет назад #
просто надо что то с модерацией решать
0
artlab artlab 13 лет назад #
нет,не спасает,поскольку файл будет уже залит.
Допустимые типы нужно определить
0
abasia abasia 13 лет назад #
А если сделать чтобы файлы грузились не каждый в свою папку, а скопом в images/catalog и туда залить
.htaccess с текстом
php_flag engine 0
AddType "text/html" .php .cgi .pl .fcgi .fpl .phtml .shtml .php2 .php3 .php4 .php5 .asp .jsp
RemoveType php

Поможет?

p.s. наверное счётчик загрузок не будет работать и чистить в ручную после удаления поста придётся, но для не большого архива это не принципиально.
+1
13 лет назад #
это дыра на сайт, а не просто проблема.
0
artlab artlab 13 лет назад #
это дыра на сайт, а не просто проблема.
если не трудно,с этого момента поподробнее..
0
artlab artlab 13 лет назад #
что бы при удалении записи чистилось на сервере,решил только с картинками.Всё чистится.Для удаления файла не могу привязать ид из таблицы к переменной.Как-то через жо организована загрузка.
В model.php каталога меняем код на этот:
Код PHP:
/* ==================================================================================================== */

	public function deleteItem($id){
        $inCore = cmsCore::getInstance();
        $imageurl = $this->getItemImageUrl($id);


        @chmod($_SERVER['DOCUMENT_ROOT']."/upload/files/$id", 0755);
        @chmod($_SERVER['DOCUMENT_ROOT']."/upload/files/images/$file", 0755);
        @chmod($_SERVER['DOCUMENT_ROOT']."/upload/files/images/small/$file.jpg", 0755);
        @chmod($_SERVER['DOCUMENT_ROOT']."/upload/files/images/medium/$file.jpg", 0755);


        @unlink($_SERVER['DOCUMENT_ROOT'].'/upload/files/$id').$item_id;
        @unlink($_SERVER['DOCUMENT_ROOT'].'/upload/files/images/'.$imageurl);
        @unlink($_SERVER['DOCUMENT_ROOT'].'/upload/files/images/small/'.$imageurl.'.jpg');
        @unlink($_SERVER['DOCUMENT_ROOT'].'/upload/files/images/medium/'.$imageurl.'.jpg');

        $this->inDB->query("DELETE FROM cms_uc_items WHERE id={$id}");
        $this->inDB->query("DELETE FROM cms_tags WHERE target='catalog' AND item_id = {$id}");
        $this->inDB->query("DELETE FROM cms_uc_ratings WHERE item_id = {$id}");

		cmsActions::removeObjectLog('add_catalog', $id);

        $inCore->deleteComments('catalog', $id);

    }

/* ==================================================================================================== */
0
vitalson9 vitalson9 12 лет назад #
1.9 полёт нормальный :)
0
Def Def 12 лет назад #
у меня файлы не грузит(

и путь до маленькой картинки не тот.
0
Def Def 12 лет назад #
все робит, только вот чтото не показывает загруженную картинку

Еще от автора

Tab
Решил вот сделать таб-закладки на сайте.Выдернул скрипт со старого своего проекта ну и вставил на новый проект.
Создание валидной бегущей строки.
Захотелось вот мне как-то "оживить" сайт и решил сделать вывод новых фотографий в виде бегущей строки ,но чаще всего, когда нам нужно было с
Безопасность админ.центра.
Доброго времени суток, уважаемые! Это моя первая запись (надеюсь не последняя),поэтому прошу строго не судить. И так,приступим к защите нашего админ.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.