Loadырь

Loadырь

Быть лучшим - не значит быть достаточно хорошим.
+1239
Репутация
4851
Рейтинг
0
Loadырь Loadырь UserPay v.1.2.1 2 года назад

Ещё погуглите, устранили «дырки» в компоненте, в той версии, что вы себе поставили или нет.

0
Loadырь Loadырь Конструктор форм iForms. Добавление записи в типы контента гостем. 2 года назад

Да, этот файл. Там внутри миниинструкция в комментариях.

0
Loadырь Loadырь Конструктор форм iForms. Добавление записи в типы контента гостем. 2 года назад

Есть тут instantcms.ru/users/loadir/files, но версия древняя, не проверял на последних.

0
Loadырь Loadырь Как не потерять правки в шаблоне. Делаем дочерний шаблон 2 года назад

Этих настроек нет так как у вас в указанной в первом скрине папке есть файл название_типа_контента_list.tpl.php. Переименуйте его или удалите и появится выбор.

+3
Loadырь Loadырь Обновление онлайн бронирование 1.0.1 2 года назад

В этой истории счаслив будет только Петя. И то не долго. Как только такой «Петя» купит компонент, продажи у его автора резко упадут или прекратятся вовсе. Поддерживать такой компонент смысла уже не будет. И когда Петя прийдет с хотелками к автору, то может нарваться на «неразрешимость» своих хотелок. С чем он и вернется к своим заказчикам, которые не видя решения своих хотелок, покинут с печалькой этого самого «Петю».

Грубо говоря Петя не рекламирует сию разработку, а нагло наживается на ее использовании на чужих сайтах.

А вообще, это делается в виде «сервиса» с подпиской к доступу. Вы код никому не отправляете, а отдаете только информацию с вашего сервера посредством API. И все ваши клиенты хранят свою информацию на вашем сервере.

0
Loadырь Loadырь Файлы free 2 года назад

Желательно вообще использовать системный загрузчик, если нет дополнительных требований. К тому же, желательно использовать стандартную таблицу cms_uploaded_files. Она почти дублирует вашу cms_upload_files, а все «доп. ячейки» приджойнить из вашей таблицы.

А что касается сторонних библиотек, то это вы вправе использовать на свой (или пользователей компонента) страх и риск. Главное, чтобы сторонние библиотеки не привнесли с собой вреда.

+8
Loadырь Loadырь Файлы free 2 года назад

Отлично. Как бороться с XSS вы научились. Осталось вам устранить загрузку фейковых картинок содержащих код скриптовых языков (js, php) внутри картинки. Хоть современные браузеры научились их корректно отображать не выполняя скрипты внутри картинки (кроме firefox — он не знает что это такое и что с ними делать, поэтому просто ломает их), но мало ли, вдруг вернут эту «фичу» в будущем. Затем проверить на sql-иньекции ваши download.php и upload.php и можно выпускать платную версию. Но дальше уже без меня. Тестируйте, изучайте, включайте в себе «режим дурачка» и подумайте, что ещё может сделать этот или подобный ему «дурак», чтобы навредить или получить данные используя ваш компонент и стройте «защиту» от этого «дурака». Почему именно «дурак», да потому, что нормальный человек не станет писать яваскрипты в заголовках к файлам. Нормальный человек не станет загружать файлы яваскриптов, меняя у них расширение с .js на .jpg. И самое главное — чем опытнее ваш «режим дурачка», тем безопаснее от таких как он ваш компонент.

+2
Loadырь Loadырь Файлы free 2 года назад

Если делать с упором на то, что данное поле можно эксплуатировать только админам, то тогда надо делать, как я это называю — «защиту от дурака» — чтобы ни при каких условиях это поле не работало у тех, кто не админ. Не все админы догадаются, что данное поле можно использовать только админам.

+2
Loadырь Loadырь Файлы free 2 года назад

Стандартная XSS уязвимость. Пишем в названии картинки не «Картинка с котятами», а яваскрипт код и получаем на странице результат его действия. В данном случае это вывод в alert() кукисов пользователя, просматривающего страницу с этой картинкой.

+5
Loadырь Loadырь Файлы free 2 года назад

Это значит, что текущую версию из каталога использовать не безопасно. Разве, что только на сайтах-форумах пенсионеров-огородников.

0
Loadырь Loadырь Обновление магазина до 1.2.0 2 года назад

У одного моего клиента был goodredactor, теперь понятно от куда это тянется.

+1
Loadырь Loadырь Обновление магазина до 1.2.0 2 года назад

А чтоьы теперь попасть в админку, надо в базе данных в таблице (cms_controllers) отключить работу (is_enable — NULL) контроллера showcase

+1
Loadырь Loadырь Обновление магазина до 1.2.0 2 года назад

У вас стоит ещё какое-то стороннее дополнение, у которого есть хук before_print_head. Так вот его работа начинается и заканчивается раньше чем заработает showcase. И в этом хуке есть «косяк»: он не возвращает объект шаблона. «Ваша миссия, если вы за нее возьметесь» © состоит в том, чтобы в админке — компоненты — управление событиями, установить событие before_print_head компонента showcase выше событий before_print_head от других сторонних компонентов.

+4
Loadырь Loadырь Файлы free 2 года назад

главное, чтобы и по безопасности

А с этим ещё надо поработать

Изображение

+2
Loadырь Loadырь Напишем компонент для отслеживания и управления актуальностью записей типов контента 2 года назад

Да, всё нормально. Сам часто пользуюсь этим мемасиком

Изображение

Можно писать всю логику и в модели. Просто здесь принято это делать немного иначе. 

Иногда использование системных методов вызывает ошибки на старых версиях движка, потому что тогда их еще не было.

Да, движок развивается и что-то новое появляется. Поэтому разработчики пишут, что дополнение будет работать начиная с некоторой версии. У меня самого есть компоненты, которые полноценно будут работать только в следующем релизе. Но использование стандартных методов поможет избежать ошибок в будущих версиях. Например может обновиться либа по работе с почтой или выйдет новая крутая либа и заменит старую совсем. Тогда ваш код по отправке писем перестанет работать. А при использовании штатных методов всё будет работать, так как при обновлении либы обновятся и методы работы с ней. От того и процесс обновления движка сайта со сторонними дополнениями будет не таким «ужасающим».

И конечно, если не нашли методы в движке, как в случае с фильтром, то придется писать свои, это факт. Но когда есть в движке и не используется, то тогда это выглядит примерно так

Изображение
+3
Loadырь Loadырь Напишем компонент для отслеживания и управления актуальностью записей типов контента 2 года назад

Я не тестировал компонент, но по идее должно работать.

Зачёт!!! 👍.

Прошлый раз удержался от комментария кода, в этот раз тоже промолчу. Скажу немного про MVC:

1. Модель. Файл модели используется для работы с базой данных — получение (запись, удаление, обновление и т.п.) данных и представление их в нужном виде. Логику по проверкам и прочие методы, не используемые в файле модели, лучше выносить в controller (файл frontend или backend). У вас это public function check($ctype_id, $item_id, $field_id, $reason_id = null) и public function dataExclude($user_id, $ctype_name).

Для работы с датами и временем в базе данных есть такие методы. Отсюда и ниже можно использовать их

2. Вид. Такие конструкции желательно выносить в файл шаблона

  1. $reasons_list = [];
  2.  
  3. if ($reasons) {
  4.  
  5. foreach ($reasons as $key => $reason) {
  6.  
  7. $reasons_list[] = '<option value="'.$key.'">'.$reason.'</option>';
  8.  
  9. }
  10.  
  11. }
  12.  
  13. $result_text = '<p class="changestatus_text">Материал будет помечен, как неактуальный. Вы уверены, что хотите продолжить?</p>';
  14.  
  15. $user = cmsUser::getInstance();
  16.  
  17. if ($reasons_list && !$user->is_admin) {
  18.  
  19. $list = '<select>'.implode($reasons_list).'</select>';
  20.  
  21. $result_text = '<p class="changestatus_text">Укажите, пожалуйста, причину, по которой материал больше неактуален.</p>'.$list;
  22.  
  23. }

Или хотя бы использовать стандартные функции шаблона github.com/instantsoft/icms2/blob/master/system/libs/template.helper.php#L333 Так ваши кнопки, селекторы и прочее сразу будут нужного цвета и размера для выбранного шаблона на сайте у пользователей данного компонента.

3. Контроллер. Для отправки писем «счастья» есть нормальные методы и им тоже не место в файле модели github.com/instantsoft/icms2/blob/master/system/controllers/comments/frontend.php#L204

0
Loadырь Loadырь Напишем поле, которое позволит админу редактировать некоторые поля прямо со страницы записи 2 года назад

Можно добавить поле url, но тогда будут проблемы с двойным кликом. Да и другие поля с автоссылками могут работать не так, как ожидаем.

Можно сделать как в виджетах при наведении мышки на поле показывать иконку редактирования.

+2
Loadырь Loadырь Напишем поле, которое позволит админу редактировать некоторые поля прямо со страницы записи 2 года назад

Зачем писать поле, если в движке это всё уже заложено. Например для объявлений создаем новое поле типа Число. Системное имя hits_counts. В опциях выставить «Только положительные числа», «Только целые числа» и «Сохранять нулевые значения»,  доступ кому надо и видимость желательно отключить в списке и в записи. Всё остальное по желанию. Далее лезем в базу в таблицу cms_con_board_fields и меняем название (name) c hits_counts на hits_count. Всё, больше в базу лезть не надо. В таблице cms_con_board у вас будет столбец с названием hits_counts, его можно удалить или пусть болтается баластом.

+2
Loadырь Loadырь Напишем поле, которое позволит админу редактировать некоторые поля прямо со страницы записи 2 года назад

Если бы это поле было доступно не только админу, а всем подряд, то надо было бы проверить, какие данные пришли, проверить, существует ли тип контента, поле и т.д. Но так как это для админа, то обойдемся без этих лишних проверок.

Просто автору это не надо, себе вы можете сделать сами эти проверки и открыть доступ всем желающим.

0
Loadырь Loadырь InstantCMS - организация рекламной кампании 2 года назад

Означает ли это количество покупок?

Нет, сюда входит также установка пробных и демо-версий.

Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.