.
12 Сентябрь 2018

Быстрая анти спам защита формы обратной связи Битрикс main.feedback

Спам в форме обратной связи Битрикса main.feedback ЗАДОЛБАЛ реально!

Собственно, презентую моё бесплатное решение, внедряемое за 5 минут:
Идея — проверка на вхождение в сообщение «http» «href» и дополнительное поле — результат суммы прописью

1. Копируем стандартный компонент main.feedback из папки ./bitrix/components/bitrix/ в свою ./bitrix/components/gtalex/
2. Заменяем подключение данного компонента на свой bitrix:main.feedback на gtalex:main.feedback
3. В форму добавляем (в массиве в цифрах прописью в каждой цифре один символ английский — чтоб было труднее спарсить) (скобки >< заменил на [])

$numbers = array(«нoль», «oдин», «двa», «mри», «чеmыре», «пяmь»);
$one = $numbers[rand(0,5)];
$two = $numbers[rand(0,5)];

[strong][?=$one?] плюс [?=$two?] = (запишите цифру ответа прописью с маленькой буквы)
[input type=’text’ name=’GT_SUM’ value=’[br/]


4. В компоненте ./bitrix/components/gtalex/component.php перед строкой

if(empty($arParams["REQUIRED_FIELDS"]) || !in_array("NONE", $arParams["REQUIRED_FIELDS"]))

добавляем обработку введённых данных

...
if(($_POST["GT_SUM"]==NULL)or($_POST["GT_SUM"]=="")) {
$arResult["ERROR_MESSAGE"][] = "Введите решение примера";
}
if(in_array($_POST["GT_SUM"],$summ)) {
} else {
$arResult["ERROR_MESSAGE"][] = "Неверное решение примера! Введите правильное.";
}
if(strpos($_POST["MESSAGE"], "href")===false) {
} else {
$arResult["ERROR_MESSAGE"][] = "Гиперссылки в сообщении запрещены";
}
if(strpos($_POST["MESSAGE"], "http")===false) {
} else {
$arResult["ERROR_MESSAGE"][] = "Гиперссылки в сообщении запрещены";
}
...

рубрики: Bitrix, Полезности, Программирование | Комментарии (0)

2 Июль 2018

Конвертация форума с платформы 1С-Битрикс на wpForo

Печально констатировать но факт — 1С Битрикс с момента запуска модуля Форум для своего движка, на сегодняшний день практически остановился в развитии 🙁
Любой современный форумный движек легко обходит Битрикс по своим возможностям, а так же быстроте работы — оно и понятно, форумный движек встроен модулем в авианосец под названием Битрикс.
Полное нежелание усовершенствовать модуль компанией лично мне вообще непонятно.
На сайте в разделе форум idea.1c-bitrix.ru для разработчиков сгенерировали огромное количество пожеланий, которые и в данный момент остаются не реализованными.
Например, вот моё пожелание с 2014 ого года Открытие темы форума с первого непрочитанного сообщения так до сих пор остаётся не реализованным 🙁

Ладно, вернёмся к сабжу — лет 5 назад я конвертировал форум с phpbb на 1С Битрикс — и вот сейчас тот же клиент обратился ко мне с обратной просьбой — перенести форум с движка 1С Битрикс на форум wpForo (плагин к WordPress).

Поставленную задачу я реализовал следующим образом:
1. Этап — выгрузка форума (пользовательские данные, форумы, топики, сообщения) в файлы в формат Mysql dump с помощью Bitrix API (CUser::GetList, CForumNew::GetList, CForumTopic::GetList, CForumMessage::GetList) и вложенные файлы в формат хранения wpForo
/wp-content/uploads/wpforo/attachments/$UID/ ($UID — айди пользователя), так же на лету для картинок в папку /wp-content/uploads/wpforo/attachments/$UID/thumbnail/ создавал превью изображения с помощью CFile::ResizeImageFile
Из подводных камней на данном этапе отмечу невозможность с помощью Bitrix API получать файловые вложения к сообщению, которые просто прикреплены, но не вставлены в тело сообщения.


решение такое - сначала регуляркой вытащил те вложения, что в теле сообщения
preg_match_all('!\[FILE ID\=(\d+)(.*?)\]!', $arMessage["POST_MESSAGE"], $match)
айдишники упадут в массив $match[1]
потом прямым запросом получаем ВСЕ вложения в массив $arAttachments
$strSql = "SELECT * FROM b_forum_file WHERE MESSAGE_ID=".$arMessage["ID"];
$res = $DB->Query($strSql);
if($ar = $res->GetNext()) {
$arAttachments[] = $ar[FILE_ID];
...
}
дальше думаю понятно :)

далее копируем папку с вложениями и превью картинками в Вордпресс и загружаем сгенерированные скриптом sql дапмы с данными форума, после чего в админке wpForo удаляем все данные кэша и вуаля!

3. Делаем 301й редирект со старых адресов на новые — в данном случае ЧПУ осталось тем же, поэтому достаточно просто убрать .php (только для форума)

# BEGIN Forum 301 redirect

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/forum/
RewriteRule (.*)\.php$ $1 [R=301,L]

# END Forum 301 redirect

PS
Так же обратите внимание на поля, отвечающие за «открытость» форумов
UPDATE `p_wpforo_topics` SET closed = 0;
UPDATE `p_wpforo_posts` SET is_answer = 0;
UPDATE `p_wpforo_posts` SET private = 0, status = 0;

Так же после загрузки нужно обратить внимание на иерархию и сортировку самих форумов — у меня они не отображались, пока я их не запихал 2м уровнем в группу «все форумы»

рубрики: Bitrix, Программирование | Комментарии (0)

25 Февраль 2018

Скрипт проверки и запуска процесса

Есть процесс который должен работать постоянно, но он к сожалению бывает что «вылетает» с ошибкой, в таком случае его нужно заново запускать
Вот, собственно, нарыл решение!

Set ProcessName=process.exe
TaskList /FI «ImageName EQ %ProcessName%» 2>nul|Find /I «%ProcessName%»>nul||(
Start «» «C:\process.exe»
)

рубрики: Администрирование, Полезности, Программирование | Комментарии (0)

23 Январь 2018

Как узнать параметры запущенной программы?

Всем привет!

Возник вопрос — как узнать параметры запущенной программы? А конкретно меня заинтересовали параметры запущенного майнера найсхэшем.

Вот и замечательное решение:

wmic process where name=»proga.exe» get commandline

где вместо «proga.exe» подставляем имя файла запущенного экзешника

рубрики: Администрирование, Лайфхак, Майнинг, Полезности, Программирование | Комментарии (0)

4 Апрель 2017

PHP скрипт — конвертация домена РФ в Punycode и обратно

Если вам нужен скрипт по конвертации домена РФ в Punycode и обратно — Вам сюда.

P.S. Наверное самый мой короткий пост 🙂
Просто понадобилось, нашел не сразу.

рубрики: Полезности, Программирование | Комментарии (0)

6 Март 2017

Скрипт — MYSQL бэкап баз данных в разные файлы

Полезный скриптик MYSQL бэкап баз данных в разные файлы


#! /bin/sh
TIMESTAMP=$(date +"%F")
BACKUP_DIR="/disk2/mysql/$TIMESTAMP"
MYSQL_USER="user"
MYSQL=/usr/local/bin/mysql
MYSQL_PASSWORD="pass"
MYSQLDUMP=/usr/local/bin/mysqldump
mkdir -pv "$BACKUP_DIR"
databases=`$MYSQL --user=$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema)"`
for db in $databases; do
$MYSQLDUMP --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --databases $db | gzip > "$BACKUP_DIR/$db.gz"
done

рубрики: NIX, Администрирование, Полезности, Программирование | Комментарии (0)

20 Февраль 2017

Быстрая доработка сайта на yii2

Итак, волею судеб достался мне на сопровождение сайт дверной-эксперт.рф реализованный на php фреймворке yii2, с весьма аскетичным административным интерфейсом. Соответственно — в каких либо корректировках сайта шаг влево, шаг вправо считается побегом 🙂 и без каких то базовых знаний фреймворка любые допилы никак не реализуемы.
ТЗ от владельца сайта — встроить на сайт онлайн калькулятор по доставке товара с Новосибирска на Дальний Восток (ссылка с уже готовым решением).
Кому интересно, подробное решение ТЗ: Читать полностью »

рубрики: Yii, Программирование | Комментарии (0)

21 Декабрь 2016

Скрипт проверки изменений файлов на сервере

Говорят «лучшее — враг хорошего», и в этом есть смысл.

Под впечатлениями от скрипта в предыдущей статье, решил поставить «следилку» на сайты нескольким своим клиентам, и чуток разочаровался — скрипт у одного не запустился т.к. версия PHP была мягко говоря устаревшей, на мои призывы обновиться сказал «работает — не трогай» (и в этом тоже есть своя правда), у другого довольно сильно подвесил систему т.к. файловая структура составляла сотни! тысяч файлов, а режима «быстрой» проверки (только по атрибутам файла — размер, даты, режим доступа, владельцы) отсутствовал.

Собственно, пришлось сделать простенький скриптик, практически моментально сравнивающий изменения из файлов, содержащих информацию о файловой структуре сайта.
Снимать дампы можно консольно (мне так удобнее), желающие могут дописать скрипт.
Скрипт «голый» — без интерфейса, отправки на мыло изменений и других наворотов — как есть.
Пользоваться так:
ls -alR > file1.txt
ls -alR > file2.txt
fdiff.php file1.txt file2.txt > diff.txt
скрипт кидает результат в поток, в моём случае перенаправленный в diff.txt

Кого заинтересовало — качаем.

рубрики: security, Администрирование, взлом и безопасность, Полезности, Программирование | Комментарии (0)

21 Октябрь 2016

PHP скрипт — генератор текста по алгоритму цепей Маркова

Всем привет!
Решил «тряхнуть стариной» — нашлёпать пару доров, посмотреть как долго проживут (раньше этой темой активно занимался, но после очередного АПа Яша начал моментально «косить» доры, а то и вообще в выдачу не ставить) — но изучение ТОПа в последнее время говорит о том, что некоторые доры всё таки живут более одного дня 🙂
Для генерации доров в своё время использовал алгоритм Маркова, скрипт генератора текста по алгоритму Маркова в готовой реализацией нашел на блоге blog. just blog (блог заинтересовал — подписался на RSS)
На всякий случай скрипт размещу локально (мало ли что).

На выходе генерируется вот такой вот бред 🙂

5 слов в предложении я посчитал мало — заменил на 7, количество предложений уменьшил до 30 — генерируется текст в районе 2.5к символов, что имхо вполне достаточно.
В регулярки я добавил Заглавные буквы — иначе их выкашивало просто.
Так же не тупим с кодировкой 🙂

рубрики: Полезности, Программирование | 4 комментария

10 Октябрь 2016

Хотлинки — уязвимость и тормоза!

Удалённо сопровождаю сайт одной довольно крупной Московской организации, судя по всему сайтов у них много и непосредственно сайт с базой данных для работы не мой.
И основной сайт этот частенько очень так жестоко висит — страничка минут по 5 не может загрузиться и вместе с ним висит и сопровождаемый мною сайт, вернее не сам сайт, а тупят только те странички, где хотлинком подключается javascript с главного сайта.
script src=»скрипт на главном сайте»
Собственно, пока основной сайт не отвиснет — страничка моего сайта не прогрузится 🙁
Изучил скрипт — никакой динамически меняющейся информации там нет — и первая же мысль пришедшая в голову — кэширование результата на сутки (хотя думаю можно и больше).
Мои сайт на движке 1С Битрикс, поэтому для реализации кэширования я использовал класс CPHPCache.
Собственно — полёт нормальный 🙂
Разгрузил и свой сайт и сайт с базой данных — теперь за скриптом ходим раз в сутки, странички генерируются без задержек.

рубрики: Программирование, Сайтостроение | Комментарии (0)

Яндекс.Метрика