Топики пользователя «Agel_Nash»

Вытягиваем html в 1 строчку [evo]

Создаем плагин HTML2Line и вешаем его на событие OnWebPagePrerender. После этого HTML код страниц будет вытягиваться в строку. Но если нам вдруг понадобится на какой-то страничке отключить сжатие, то в настройках
этой страницы снимаем галочку: «Доступен для поиска». Код под катом…


( Читать дальше )

Исправляем ошибку валидации разрешения файла в менеджере файлов [evo]

Заметил багу в ветке evolution 1.0.6
Нет возможности загрузить файлы с разрешением написаном в другом регистре. Например, файлы *.JPG, *.JPg и т.п. мы не сможем загрузить, если в настройках прописано .jpg.

Исправляется очень просто: открываем файл /manager/includes/files.dynamic.php и в функции getExtension()
перед ретурнами добавляем strtolower. т.е. получается функция

function getExtension($string) {
   $pos = false;
   $search = ".";
   if (is_int(strpos($string, $search))) {
       $endPos = strlen($string);
       while ($endPos > 0) {
           $endPos = $endPos - 1;
           $pos = strpos($string, $search, $endPos);
           if (is_int($pos)) {
               break;
           }
       }
   }
   if (is_int($pos)) {
       $len = strlen($search);
       return strtolower(substr($string, $pos));
   }
    return strtolower($string);
}


Но даже с этим патчем остается один косяк: если в настройках будет написано не jpg, а JPG, то мы опять не сможем загрузить файлы, т.к. при импорте настроек нет strtolower. Исправлять это можно в manager/includes/settings.inc.php, но мы поправим скрипты, которые непосредственно работают с файлами, т.к. у пользователей есть еще индивидуальные настройки (там тоеж могут быть переопределены разрешенные для загрузки файлы).

Открываем опять /manager/includes/files.dynamic.php и заменяем
$uploadablefiles[$i] = ".".$uploadablefiles[$i]; // add a dot :)
на
$uploadablefiles[$i] = ".".strtolower($uploadablefiles[$i]); // add a dot :)


Теперь открываем /manager/media/browser/mcpuk/connectors/php/config.php (дефолтный менджер файлов используемый при редактировании документов)
$upload_files = explode(',',$upload_files);
$upload_images = explode(',',$upload_images);
$upload_media = explode(',',$upload_media);
$upload_flash = explode(',',$upload_flash);
на
$upload_files = explode(',',strtolower($upload_files));
$upload_images = explode(',',strtolower($upload_images));
$upload_media = explode(',',strtolower($upload_media));
$upload_flash = explode(',',strtolower($upload_flash));


P.S. Если у вас есть какие-то еще скрипты использующие настройки разрешенных к загрузке файлов, либо же вы используете другой файловый менеджер то рекомендую провериться как у вас дела обстоят.

SEO оптимизация сайта на MODx [часть 2]

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


( Читать дальше )

SEO оптимизация сайта на MODx [часть 1]

В данном топике хочу поделиться опытом и рассказать как можно грамотно организовать внутренную оптимизацию сайта без ущерба для последующей модернизации сайта. С одной стороны MODx тут не при чем, но с другой стороны примеры реализации я буду приводить именно на этой CMS (ветка Evolution)


( Читать дальше )

Тесты для проверки знаний

Как я говорил немного ранее, что самый лучший способ повысить свой уровень — это тесты. Если вы незнаете ответ, то не спешите заглядывать в подсказки. Подумайте и если ничего не придумывается, то только тогда смотрите ответы и не приступайте к следующему вопросу пока не поймете почему так, а не иначе.


( Читать дальше )

Безопасность ваших сайтов. Правило 5

Правило 5: фильтрация данных должна быть уместна на данном участке кода.

Тут я думаю стоит рассмотреть все на конкретных примерах.

Пример 1 — обработка echo
Если вы какие-то данные получили от пользователя и хотите опять отобразить на странице, то стоит применить функцию htmlspecialchars

Пример 2 — обработка строк перед операциями в БД
Если вы хотите какие-то данные записать в базу, то стоит использовать escape.

Пример 3 — обработка чисел перед операциями в БД
Вы получаете какое-то число возможно в $_GET['id'] и хотите на его основании сделать выборку в базе. Для этого следует предварительно обработать переменную и привести ее 100% числовому виду. Тут вам могут помочь функции intval, is_numeric то лично мне импонирует запись вида:

$id=(isset($_GET['id']) && (int)$_GET['id']>0)?(int)$_GET['id']:0;



( Читать дальше )

Безопасность ваших сайтов. Правило 4

Правило 3
Правило 4: Никогда не используйте конфигурацию по умолчанию и удаляйте все ненужные скрипты.


( Читать дальше )

Безопасность ваших сайтов. Правило 3

Правило 2
Правило 3: Никогда не используйте кустарную сборку CMS или скрипт не изучив его исходный код. В противном случае возьмите исходник с официального сайта и допилите, либо же для себя подготовьте свою сборку (Кстати, разработчики MODx не одобряют выкладывание в паблик своих сборок этой CMS. Я об этом говорил и буду говорить).


( Читать дальше )

Безопасность ваших сайтов. Правило 2

Правило 1
Правило 2 гласит: Никогда не доверяй пользователю. Будь параноиком. Все об этом знают и по сути на этом можно было бы закончить, если бы разработчики в априори были параноиками.
Итак, что нам нужно, чтобы стать параноиком?
1) Фильтровать данные в переменной всегда перед тем как передать в функцию/класс или какой-то другой обработчик.
2) Фильтровать данные при получении внутри функции.


( Читать дальше )