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

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

С нами с 31 января 2013; Место в рейтинге пользователей: #3
Сергей Шлоков
02 октября 2018, 07:04
1
+1
Отсутствие фильтрации квадратных скобочек реально напрягает…
Ну вот откуда Вы это взяли? Евгений же всё внятно объяснил.

В идеале было бы как-то в одном месте все данные фильтровать по каким-то своим правилам. Типа такой общий шлюз, сначала данные через него проходят, а потом уже в сниппеты и компоненты. Но не знаю возможно ли это.
Без проблем. Плагин на событие OnMODXInit.
Сергей Шлоков
01 октября 2018, 20:31
1
+1
MODX фильтрует POST, GET, REQUEST, COOKIE в каждом запросе. Но этого, конечно, недостаточно. Фильтруйте сами. Например, так.

А ещё фильтруются эти значения
$targets= array ('PHP_SELF', 'HTTP_USER_AGENT', 'HTTP_REFERER', 'QUERY_STRING');
foreach ($targets as $target) {
    $_SERVER[$target] = isset ($_SERVER[$target]) ? htmlspecialchars($_SERVER[$target], ENT_QUOTES) : null;
}
Сергей Шлоков
30 сентября 2018, 20:24
+1
Этого. ))
Сергей Шлоков
30 сентября 2018, 19:38
0
А в июле?
Сергей Шлоков
30 сентября 2018, 09:21
+4
Отличный митап! Виталий и Леонид — молодцы! Жаль у меня не получилось. Женя Борисов раскрыл интересный аспект разработки на MODX. Очень важный для всех. Жаль в трансляции плохо видно. В дополнение к этой теме в ближайшее время напишу статью про потенциальную уязвимость организации работы с сессией.
Сергей Шлоков
29 сентября 2018, 10:16
0
{'April 15, 2014' | ereplace : '/(\w+) (\d+), (\d+)/i' : '${1}1, $3'}
НО! Как сделать так, чтобы она вырезала только то, что мне нужно у меня не получилось, не силен в PHP и кракозябры эти не пойму, воротил, воротил и не наворотил ничего!
Так а что нужно-то?
Сергей Шлоков
29 сентября 2018, 10:05
+1
Разрешите выполнять php странице в настройках pdoTools и используйте нативную функцию php
{$.php.preg_replace('#title="(.*?)(\..*?)"#','title="$1"',$_modx->resource.content)}
Сергей Шлоков
29 сентября 2018, 10:00
0
Ради интереса решил попробовать. Fenom нормально кушает $1. Но в данном случае возникает ошибка —
Using the eval modifier for regular expressions is not allowed: "#title="(.*?)(\..*?)"#"
Мешает некорректная регулярка, которой не нравится буква e в слове title.
Сергей Шлоков
28 сентября 2018, 09:01
+1
Мама родная!
Во-первых, тег ignore вырезает содержимое и добавляет его уже после парсинга перед выводом в браузер. Иначе из-за специфики парсинга MODX он не работает.
Во-вторых, кавычки добавляет браузер при рендеринге страницы.Пытается привести к корректному виду то, что ему подсунули.

Как минимум, нужно вынести шаблон $frame_tpl в чанк (обычный или файловый). pdoTools кэширует шаблоны для цикла. Так что лишних запросов не будет. Ну и код этого шаблона требует большой оптимизации. Для каждого продукта выполняется такой код
{$_modx->runSnippet('!msop2GetOptionsWithPrices', ['id ' => $id,'key ' => 'size ','price '=> ($id | resource : 'price ')]) | toJSON}
Пожалейте пользователя и парсер. На каждой итерации выполнять такое — это явно попахивает местью заказчику.
А вот это
($id | resource : 'price ')
нельзя заменить на $price?
Сергей Шлоков
20 сентября 2018, 21:39
0
А я наивный настоящий адрес указал на гитхабе.А как к тебе напрямую постучаться, если ты можешь уделить время на меня?
Сергей Шлоков
19 сентября 2018, 22:15
0
Серег ты странно просишь о помощи.
Не навязчиво )

Если тебя действительно что то интересует то не проще акцентировать внимание на этом?
Так ты почту-то получал?
Сергей Шлоков
19 сентября 2018, 21:37
0
Чет я не помню чтобы ты хоть когда ко мне обращался…
Я тебе написал на gmail с гитхаба.

Да и в апи заказа никаких существенных изменений не происходило что могли бы тебя смутить.
С новым минишопом мой букинг валится по фаталу. Насколько я помню, ты переделывал старые дополнения для нового минишопа. А также делал новые с примечанием, что они несовместимы с минишопом версии ниже 2.4.

Видимо просто нет желания
Желания нет. Я так выше и написал. Я с минишопом вообще никогда не работал. Мне Миша Воеводский помог. Об этом я тоже писал.

ток ято причем?
А я где-то сказал, что ты причём? Ты мне не ответил. Я об этом и сказал.

Так что не надо ля ля…
Меняю на фа фа и си си.

Я почему обратился… Ты большой спец по интеграции с минишопом. Уверен, не глядя в код можешь подсказать. А то, жуть как неохота разбираться с платежными системами, регистрироваться в них, настраивать сэндбоксы. У меня только ЯД. Покупать к нему платное дополнение для теста ломает. Поэтому и нужен совет старшего товарища.
Сергей Шлоков
19 сентября 2018, 18:34
0
В новой версии miniShop изменилось API заказа. Я не большой спец по минишопу. Вернее, вообще не спец. Обратился к Володе за помощью, так как он также исправлял эту проблему. Он проигнорил. С Василием я вообще не могу найти общий язык. Поэтому нужно сесть и погрузиться. Но на это нет ни времени, ни желания. Но видимо всё-таки придётся.
Сергей Шлоков
19 сентября 2018, 16:40
0
Видимо придётся. Непростое это дело. Володя, например, выпускал отдельные покеты для нового минишопа. А мне, честно говоря, не хочется рожать oneBooking2.
Сергей Шлоков
19 сентября 2018, 16:39
0
Да, приходи вчера. )
Сергей Шлоков
19 сентября 2018, 06:17
+2
MODX3 выйдет в 2015 году. )
Сергей Шлоков
16 сентября 2018, 17:53
+1
Пользоваться высокоуровневым интерфейсом удобнее. Только в этом классе этого не должно быть. Он должен работать через FileHandler.
Как пример функция email из библиотеки modHelpers заменяет такой код
$mail = $modx->getService('mail', 'mail.modPHPMailer');
$mail->setHTML(true);

$mail->set(modMail::MAIL_SUBJECT, $subject);
$mail->set(modMail::MAIL_BODY, $body);
$mail->set(modMail::MAIL_SENDER, $modx->getOption('emailsender'));
$mail->set(modMail::MAIL_FROM, $modx->getOption('emailsender');
$mail->set(modMail::MAIL_FROM_NAME,$modx->getOption('site_name'));
$mail->address('to', $email);
$mail->send();

Правда короче и удобнее?
Сергей Шлоков
16 сентября 2018, 17:45
+1
А ещё вот эта известная «фича»:
if ($contextKey !== 'mgr' && !$this->user) {
    $this->user= $this->getAuthenticatedUser('mgr');
}
Т.е. если пользователя залогинен только в админке, то он автоматически аутентифицируется на сайте. Вот зачем? Многие уже на этом попадались.
Сергей Шлоков
16 сентября 2018, 17:42
0
Решил глянуть как организована работа с сессией. И вот такое увидел в классе modUser в методе addSessionContext (другие не смотрел)
if (!isset($_SESSION["modx.{$context}.user.token"]) || empty($_SESSION["modx.{$context}.user.token"])) {
А вот так добавляются скрипты в классе modX
$this->sjscripts[count($this->sjscripts)]= $src;
У меня одного ощущение, что писал практикант? ))

Может Евгений меня поправит, но работа с сессией имеет слабые места. Достаточно добавить в сессию один ключик и вы авторизованы в админке.В свете недавней уязвимости сделать это раз плюнуть.