16
Декабрь
2020
Для одного из сайтов нужно было выполнить преобразование PNG в JPG во всех подпапках, а их было довольно много…
Помимо этого нужно подправить и сами индексные странички — заменив расширение и в них.
Сваял на коленке, решил запостить т.к. задача довольно часто встречается
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
<? conv('.'); function conv($dir) { $files = scandir($dir); foreach($files as $file) { if($file=='.') continue; if($file=='..') continue; $dfile = $dir.'/'.$file; if(is_dir($dfile)) conv($dfile); if(is_file($dfile)) { if(substr($file,-4)==".png") { echo $dfile."\n"; $outfile = substr($dfile,0,-4).".jpg"; unlink($outfile); echo $outfile."\n"; png2jpg($dfile, $outfile, 80); } if($file=="index.php") { echo $dfile."\n"; $buf = file_get_contents($dfile); var_dump($buf); $new = str_replace(".png", ".jpg", $buf); file_put_contents($dfile, $new); } } } } function png2jpg($originalFile, $outputFile, $quality) { $image = imagecreatefrompng($originalFile); imagejpeg($image, $outputFile, $quality); imagedestroy($image); } ?> |
рубрики: PHP |
6
Ноябрь
2020
Для одного из проектов на виртуальной машине 1С Битрик понадобилось включить расширение pdo_sqlite
Как обычно — залез в /etc/php.d/ нашел нужный мне файл 30-pdo_sqlite.ini и переименовал 30-pdo_sqlite.ini.disabled в 30-pdo_sqlite.ini
Расширение не включилось — посмотрел phpinfo() — сам файл 30-pdo_sqlite.ini подцепляется, но сама информация по pdo_sqlite не подключилась
php —ini так же подтвердило подключение модуля
далее решил глянуть инфу с консоли
php -i | grep mysql
тут то в самом начале и обнаружилась проблема
PHP Warning: PHP Startup: Unable to load dynamic library ‘pdo_sqlite’ (tried: /usr/lib64/php/modules/pdo_sqlite (/usr/lib64/php/modules/pdo_sqlite: cannot open shared object file: No such file or directory), /usr/lib64/php/modules/pdo_sqlite.so (/usr/lib64/php/modules/pdo_sqlite.so: undefined symbol: php_pdo_unregister_driver)) in Unknown on line 0
посмотрел — всё Ок, файл /usr/lib64/php/modules/pdo_sqlite присутствует!
В общем не буду томить, решение оказалось очень простым — включение модуля 30-pdo.ini необходимого уже для дальнейшей работы других pdo_*** модулей
рубрики: Bitrix, NIX, PHP, Администрирование |
26
Октябрь
2020
Повадились иностранные боты заполнять форму заказа на одном из сайтов всякими нерусскими данными.
Антикапчю пока вешать не стал — решил сделать простенькую проверку введённых данных на кириллицу (имя должно быть введено кириллицей)
Собственно, рабочий код в студию
|
if (preg_match("/^[а-яё]+$/ui", $var)) { echo 'Кириллица!'; } |
рубрики: PHP |
8
Сентябрь
2020
Итак, на новом проекте — интернет магазин по продаже фотообоев даже после всех настроек почты, опубликованных ранее (пост 1, пост 2) почта на GMail, полученная с сайта всё равно улетала в спам 🙁
Я попробовал отправить с этого же сайта почту скриптом через Яндекс (домен уже был привязан через pdd.yandex.ru к Яндексу, MX запись так же была настроена) — и о чудо, сообщение без проблем пришло во входящее!
Далее стандартную функцию по отправке почты Битрикса я подменил на новую (путём объявления функции custom_mail в /bitrix/php_interfaces/init.php) и вуаля — теперь вся почта отправленная с Битрикса теперь отправляется через Яндекс Почту и не падает в спам!
Ссылочка на готовое решение — функция по отправке почты Битрикс через Яндекс
Готовое решение не моё — вот исходник, но сразу скажу, что там допущены две ошибки которые я пофиксил в своём варианте.
Отдельно о моментах, которые пришлось решать попутно
* Пришлось ставить composer, в связи с чем потребовалось включить php расширение phar — решение mv /etc/php.d/20-phar.ini.disabled /etc/php.d/20-phar.ini и рестарт браузера
wget https://getcomposer.org/composer.phar
chmod +x composer.phar
Далее, что бы Composer был доступен не только из папки, но и глобально в системе перемещаем его в папку /usr/local/bin/ командой mv
mv composer.phar /usr/local/bin/composer
* Для работы скрипта использовал скрипт PHPMailer + хорошая статья по данному скрипту
* Для работы imap_mime_header_decode используемой в скрипте потребовалось установить (именно установить а не включить) расширение php_imap (на centos команда yum install php_imap отработала корректно)
рубрики: Bitrix, PHP, Программирование |
10
Июль
2020
Пост из разряда «закладка»
Сразу сама функция по отдаче файлов
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
function file_force_download($file) { if (file_exists($file)) { // сбрасываем буфер вывода PHP, чтобы избежать переполнения памяти выделенной под скрипт // если этого не сделать файл будет читаться в память полностью! if (ob_get_level()) { ob_end_clean(); } // заставляем браузер показать окно сохранения файла header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename=' . basename($file)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); // читаем файл и отправляем его пользователю readfile($file); exit; } } |
Взято отсюда https://habr.com/ru/post/151795/
рубрики: PHP, Полезности |
24
Январь
2020
Скорость загрузки сайта была улучшена с 7.9 секунд до 1.45 секунды!
Кому интересно — читаем 🙂
Преамбула — обратился ко мне клиент с просьбой ускорить загрузку сайта, т.к. ну уж очень медленно всё — более 7 секунд!!! на загрузку главной страницы
изначальная версия главной (для тестирования обновляем страницу со сбросом кэша браузера)
Реклама крутится — бабки ввалены, а с такой скоростью врят ли стоит чего то ловить…
Сайт — очень красивая лендинг простыня, с кучей красивой графики и всяких не менее красивых эффектов появления другой графики — в общем полный треш в плане веса страницы, со всеми вытекающими …
Причём именно для этого сайта тормознутость загрузки очень явно видна т.к. пока не прогрузится вся страничка на видимой части не всплывёт непосредственно главное содержание странички — заголовки и футболист! До этого страничка будет выглядеть пустой.

Все обычные советы — сжать и обрезать картинки, объединить и сжать css и js, поместить в конец страницы и прочие — всё это как слону дробина при таких объёмах графики на странице.
Начал изучать и нашел на хабре среди обычных один довольно интересный совет
Читать полностью »
рубрики: Bitrix, Javascript - JQuery, PHP, Лайфхак, Полезности, Программирование |
23
Январь
2020
Всем привет!
Собственно, в качестве среды программирования поставил себе Visual Studio Code и начал потихоньку настраивать.
Судя по отзывам — лёгкий, удобный, функциональный и главное — бесплатный!
Для старта глянул видос от ITDoctor обзор редактора и начал осваивать.
Первая проблема с которой я столкнулся это то, что редактор не форматирует html разметку в php файлах
В том же Битриксе все шаблоны создаются в *.php файлах соответственно, вся html разметка там же
Всё что нашел в рунете — а ля расширение phpfmt умеет, но нифига оно не форматирует 🙁
Решение подсказали на форуме cyberforum.ru — ветка
Расширение Format HTML in PHP справилось с поставленной задачей!
рубрики: PHP, Программирование |
20
Декабрь
2019
Мини пост закладка (для себя), а то постоянно забываю и ищу эту фишку.
Для защиты входных параметров в скриптах можно использовать функцию
function formatstr($str)
{
$str = trim($str);
$str = stripslashes($str);
$str = htmlspecialchars($str);
return $str;
}
Либо встроенную в PHP фильтрацию
$str = filter_input( INPUT_GET, ‘str’, FILTER_SANITIZE_STRING);
рубрики: PHP |
8
Ноябрь
2018
Собственно, задача — автоматизация процесса загрузки файла на сайты через веб-форму.
То есть на разные сайты мне нужно загрузить один и тот же файлик — захожу на сайт, выбираю нужный файл жму аплоад!
Список адресов сайтов с формой есть, файл конечно тоже — нужно автоматизировать!
Для реализации поставленной задачи решил использовать библиотеку 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, Полезности, Программирование |