Сергей Шлоков

Сергей Шлоков

С нами с 31 января 2013; Место в рейтинге пользователей: #3
Сергей Шлоков
13 марта 2019, 12:49
0
А потом придет Евгений и скажет «вы всё врёти!». Пытался быть объективным.
Думаешь он нашёл больше, чем исправил? ))

Что касается Ace, видимо меня сбил с толку первоисточник.
В рассылке говориться про теги MODX, а не PHP. Пытаюсь быть точным ))
Сергей Шлоков
13 марта 2019, 11:16
0
Благодаря усилиям и помощи @Евгений Борисов исправлены не все, но многие XSS уязвимости в админке MODX.
Мне кажется, так звучит более оптимистично —
Благодаря усилиям и помощи @Евгений Борисов исправлены найденные XSS уязвимости в админке MODX.
А то «не все, но многие» вызывает ощущение дырявости админки.

Ace 1.8.0 – добавлена возможность автозавершения тегов PHP по Ctrl + Space. Не все поддерживается, но уже хорошо.
Не знаю насчет тегов, но я добавлял автодополнение функций PHP. Причем делю их на встроенные и пользовательские. Старенький я уже стал. Все названия функций не запомнишь. А на php.net подсказка работает только от начала слова. Т.е. если ввести get_arg, то ничего не найдёт. А Ace выведет func_get_arg(). Таким образом главное помнить любую часть функции, а не только начало. ))
Вань, а что ещё нужно поддерживать?

П.С, Кстати про Ace. Лично мне не хватает блокового комментирования кода и multiple Copy/Paste. Где это править в ядре с ходу разобраться не получилось. А отдельный модуль писать не очень хочется. Может найдётся кто знающий как сделать кошерно?
Сергей Шлоков
04 марта 2019, 09:46
+1
По хорошему, код проверки нужно менять на более безопасный. Вместо прямого сравнения лучше использовать специальную функцию hash_equals.
Сергей Шлоков
04 марта 2019, 07:26
0
Мда. Такой совет явно не вяжется с датой регистрации. (
Сергей Шлоков
04 марта 2019, 07:25
0
Этот javascript ни выполняет никаких долгих блокирующих манипуляций. Он просто выставляет переменные. Поэтому его можно оставить.
Сергей Шлоков
04 марта 2019, 07:21
0
Пустые настройки нужны, чтобы отключить загрузку соответствующих файлов при вызове сниппета. Просто подключите нужные файлы в шаблоне вручную.
У Tickets есть такие же системные настройки.
Сергей Шлоков
04 марта 2019, 07:10
+2
Мне не совсем понятна логика
В этом то и проблема. Если не понятно, надо сразу валить на систему — это она плохая, а я всё делаю правильно.

Зачем вообще парсить статический ресурс? Надо его просто взять да и отдать как есть…
А просто не нужно указывать тип содержимого «HTML». Статический ресурс означает, что это ресурс (документ!) из файла, а не из базы. Обычную статику отдают через web-сервер.

Вообще, честно говоря, совершенно не понятно, зачем нужно делать такой финт. Но уж если вдруг это странное желание не унять, то нужно создать соответствующий тип содержимого и указать его в ресурсе.
joxi.ru/vAWLD5eugEgM8r
Сергей Шлоков
02 марта 2019, 08:39
+4
Прикольный заголовок.) А хранить данные в куки — это как держать ключ от квартиры под ковриком.
Подозреваю, что имелось ввиду, что пользователь логинится на сайте А и если он является админом на сайте В, то подтянуть определённые данные.
1. Запрос с данными на коннектор.
2. В нём подгружаешь пользователя по логину.
3. Проверяешь пароль, если пользователь нашелся (passwordMatches()).
4. Проверяешь sudo или принадлежность к какой-то группе.
5. Возвращаешь нужные данные.
Сергей Шлоков
02 марта 2019, 07:50
+1
Можно так
$c = $modx->newQuery('transport.modTransportPackage');
$c->select('version_major')
    ->where(array(
    'package_name' => 'ИМЯ ПАКЕТА',
))
    ->sortby('version_major','DESC')
    ->limit(1);
$version = (int) $modx->getValue($c->prepare());

if ($version == 3)  {
    ...
}
Сергей Шлоков
21 февраля 2019, 19:06
0
ReCaptchaV2. Просто я в валидаторе оставил обязательное поле от второй версии. Поэтому валидация не проходила, письма не отправлялись, но FormIt ошибки не выдавал. В 3-1 версии этого поля нет, убрал его из валидации. Теперь письма приходят, хотя ошибка так и осталась.
Сергей Шлоков
19 февраля 2019, 19:29
0
А я v3 не смог запустить. У меня-то как-раз письма не приходят. Остался на второй версии.
При сабмите в консоль валится ошибка «Uncaught Error: No reCAPTCHA clients exist.»
Сергей Шлоков
19 февраля 2019, 18:33
0
Это значит хук не указан.
Сергей Шлоков
19 февраля 2019, 18:26
0
Без обид, но решение плохое. Просто подумай на тему, если чел заходит с разных браузеров. Или с работы и из дома.
Сергей Шлоков
15 января 2019, 08:43
0
Небольшой баг. Список тикетов в админке при первой загрузке (хоть в компоненте, хоть в документе TicketSection) вызывается с сортировкой по id.
class TicketGetListProcessor extends modObjectGetListProcessor
{
    public $classKey = 'Ticket';
    public $defaultSortField = 'id';
    public $defaultSortDirection = 'DESC';
При работе с пагинацией (вперёд, назад, обновить), сортировка по createdon.
Сергей Шлоков
12 января 2019, 14:58
0
Весь код MODX пестрит таким
function __construct(modX &$modx) {
        $this->modx= & $modx;
}
Т.е. разработчики MODX не знают как работают объекты и ссылки. Описанный выше код я считаю опасным. Ибо при изменении $this->modx глобальный объект $modx тоже измениться. А если убрать ссылки, то даже если сделать так $this->modx = null, глобальный объект останется невредимым.
Сергей Шлоков
12 января 2019, 14:53
0
Ни секунды не сомневался, что ты знаешь матчасть. Поэтому и спросил, что ты имеешь ввиду. И то, что ты описал верно для всего, кроме объектов. В самой первой ссылке в твоем комменте есть пример с функцией, демонстрирующий специфику объектов. Я в своё время разбирал это отличие. Поэтому, если ты передашь объект, то передастся не копия, а указатель на объект. И твой пример не сработает.

Я, кстати, тоже несколько раз порывался сделать PR с EXTR_REFS, но забил. Простейшие изменения принимаются годами, а тут даже надеяться не на что. С этим нужно разбираться, а у них ни времени ни желания нету, а возможно и знаний.
Сергей Шлоков
12 января 2019, 08:51
0
Извиняюсь, что вмешиваюсь. Говоря про объекты ты имеешь ввиду объекты PHP или параметры плагина?
MODX не всегда корректно использует ссылки на объекты. В результате передается не объект, а его копия, и теряется связь с оригиналом.
Если объекты PHP, то уверен, что ты просто оговорился.
Сергей Шлоков
10 января 2019, 07:03
+4
По-моему, это даже не полусладкое, а полусухое. Ну для чанков, допустим, подсластитель в том, чтобы не писать папку «chunk» и разширение «tpl». А для сниппета где он? Профит в том, чтобы не писать палку и двоеточие?
// pdoTools
{'pdoResources' | snippet : ['param' => 'value']}
// Твой вариант
{snippet 'pdoResources' ['param' => 'value']}
Кроме того возможна путаница (для стороннего разработчика) — chunk вызывает файловый чанк, а snippet — обычный сниппет.

Для чанков, подключаемых таким способом, нужно соблюдать 2 условия. Они должны
1) Быть файловыми и лежать в /core/elements/chunks/
2) Иметь расширение .tpl
1. Необязательно. Так как ты сломал механизм pdoTools, то можно указать любой путь.
2. Тут да. Так как nul байт пофиксили в 5.3.

Дерзайте!
Спасибо!
Сергей Шлоков
24 декабря 2018, 21:46
0
Теперь буду знать, что для Василия Наумкина, Павла Гвоздя и Алексея Бгатова вполне дружелюбно первым комментарием без объяснения каких-либо причин кинуть предъяву.
Хоть кто-нибудь сталкивался с такой проблемой? У кого-то был сбой? И вот кто бы подумал, столкнулся человек с проблемой, а нафига разбираться, зачем кому-то об этом сказать, выяснить. Не, лучше потом саркастически хмыкнуть. Может проблемы с менеджером пакетов? Может попробовать на том же modhost.pro? Нахер, лучше автору плюнуть. А чё такого?
Спасибо на добром слове!