.
8 Ноябрь 2018

PHP — как отправить файл POST запросом cURL

Собственно, задача — автоматизация процесса загрузки файла на сайты через веб-форму.
То есть на разные сайты мне нужно загрузить один и тот же файлик — захожу на сайт, выбираю нужный файл жму аплоад!
Список адресов сайтов с формой есть, файл конечно тоже — нужно автоматизировать!

Для реализации поставленной задачи решил использовать библиотеку curl, но вот с передачей файла возникла проблема — никак у меня не получалось отправить файл в форму!
Довольно долго рыл и нарыл таки рабочее решение
https://stackoverflow.com/questions/4223977/send-file-via-curl-from-form-post-in-php и оно же на другом ресурсе
https://exceptionshub.com/send-file-via-curl-from-form-post-in-php.html

Собственно, чел видимо затрахался как и я и решил передаваемые в POST данные сгенерировать самостоятельно с правильными заголовками.
Незнаю почему, но у меня в кодировке base64 ну никак не передавался, вернее передавался, но в такой кодировке и сохранялся 🙂 т.е. в закодированном виде, поэтому я несколько переделал скрипт до рабочего состояния (и увеличил кол-во передаваемых переменных для наглядности).

Получился такой код
Читать полностью »

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

26 Сентябрь 2018

1С 7.7 пропадает точка при выгрузке формы в xls

Волею судеб приходится заниматься всякой всячиной — одна из которых поддержка клиентов по вопросам 1С 7.7
Т.к. поиск в сети не принес мне быстрых результатов пришлось сабж решать самому.
О проблеме более детально — выводим УПД из 1С 7.7. сохраняем в xls — открываем, а там количество вместо 2,000 стоит 2000
То есть запятая, отделяющая дробную часть тупо пропадает по всему документу.

Решение такое — открываем конфигуратор, там общий модуль — в нём ищём поиском УПД891 — позиционируемся на процедуру вывода в таблицу УПД891.
Там чуть ниже находим строчку, задающую формат вывода количества в таблице
ПечКоличество = Формат(ТабДок.Количество, «Ч-15.3,»);
Тройку меняем на двойку, сохраняемся и готово!

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

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)

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