tushov.ru

блог php-программиста, преподавателя и конcультанта

Tag: PHP

Page 1/2

PHP, Курс веб-программирования

pishikod.ru — обучение веб-программированию на PHP

Разрешите представить Вам мой новый проект онлайн-обучения программированию на языке PHPpishikod.ru

Теперь всё что касается обучения программированию будет именно на нём. Здесь я, если и буду публиковать что-либо на тему обучения, то только рекламного характера. Потому добро пожаловать на pishikod.ru — проект обучения программированию на PHP по простым и понятным пошаговым статьям с самостоятельными заданиями, а также моей бесплатной обратной связью в комментариях к каждой статье!

Также, практически, в любой социальной сети Вы сможете найти официальные аккаунты и страницы проекта по слову: pishikod или универсальному хэш-тегу: #pishikod

 

WordPress, Заметки программиста, Рецепты

Организация вывода notice-уведомлений в админке WordPress

Всё, что нужно знать по поводу вывода уведомлений в админке WordPress написано здесь: https://codex.wordpress.org/Plugin_API/Action_Reference/admin_notices

Установка уведомлений происходит через «навешивание» своей функции на action: admin_notices

Однако, крайне не удобно всё это использовать в своих плагинах.

Читать далее >

PHP, Заметки программиста

Как скачать файл доступный по протоколу HTTPS используя CURL

Существует проблема копирования (скачивания) файлов из сети, доступных по протоколу HTTPS через такие простые функции как copy(), file_get_contents и т.д. Не с первого раза нашел информацию по вопросу использования CURL’а для скачивания по протоколу HTTPS. И вот что получилось:

Строки:

необходимы при работе на Windows-машине.

PHP, Заметки программиста, Найдено в Интернете

Переводим большой html-текст через Google Translate на PHP

Недавно в одном проекте потребовалось реализовать функционал перевода html-текста на разные языки. Сразу же на ум пришёл машинный перевод при помощи translate.google.ru. Все бы ничего если бы не два НО, которые встали на пути:

  1. Google Translate не позволяет переводить за раз текст размером более 5000 символов
  2. Google Translate переводит вместе с текстом и HTML-теги
  3. Если резать текст на кусочки размером до 5 000 символов, то незакрытые HTML-теги в кусках Google Translate удалит

Немного поковырявшись во всем этом удалось получить более менее рабочее решение, а именно 2-е функции: translate — собственно функция перевода (найдено в Интернете), googleTranslate — функция корректной обрезки больших текстов на кусочки по 5 000 с учетом не проблемы не закрытых тегов.

Итак, если еще кому-то пригодится, собственно сам код:

 

Joomla, Заметки программиста

Обновленный плагин StartPage

В плагине StartPage (http://tushov.ru/post/558) обнаружена ошибка определения Главной страницы сайта в результате чего у многих людей, у которых вместо стандартного вывода com_frontpage на Главной странице сайта было что-то другое плагин не работал. Вся проблема состояла в неправильном определении главной страницы. Ошибка исправлена, теперь я надеюсь многие оценят полезность плагина, работающего без ошибок =)

И еще, вот как не надо определять признак главной страницы:

правильный способ:

Скачать обновленный плагин  StartPage 1.1

PHP

Ручной антивирусник на PHP =)

Многие наверное слышали про повальное заражение сайтов своеобразным вирусом.  Смысл вируса простой — в каждый index.php (index.html) файл на сервер, где лежит сайт вставляется вредоносный JavaScript-код http://addonrock.ru/Raw_Data.js Код вставляется иногда очень тупо, вызывает error’ы или если у вас display_errors = off то превращает сайты в белые простынки :). Основная заявленная в Интернете причина уязвимости состоит не в уязвимости сервера и не в дырке в CMS, которую вы используете, а именно  в присутствии трояна на вашем компьютере с которого вы осуществляете доступ по FTP к серверу где лежит ваш сайт. Троян похищает пароли к FTP, ну а далее просто патчит JS-вставками все index.* файлы на сервере.

Лечится все это просто, удаляются эти самые JS-вставки кода и все дела. Вот только если файлов на сервере несколько тысяч как например в Joomla и вы вносили исправления и не имеете актуальной зеркальной копии сайта — проблема становится более ощутимой.

Предлагаю свое решение, которым я пользовался для устранение в отдельных случаях вредоносного кода из index.* файлов на сервере. Просто положите в корневую директорию сайта файл antivirus.php, запустите скрипт и увидите анализ всех файлов на предмет присутствия в них JS-вставок кода. Внимательно нажимая на ссылку Лечить напротив нужных файлов удалите все вставки вредоносного кода.  Вот собственно и все.

Самое главное — не забудьте сменить пароль к FTP после излечения всех файлов. И не храните пароли к FTP в программах (FTP-манагерах особенно аля TotalCommander).

Скачать antivirus.zip

WordPress, Заметки программиста

Как не заставлять пользователя создавать и удалять вручную страницы для вашего плагина WordPress?

Все кто когда либо разрабатывал плагины для WordPress требующие наличие своих адресов (URL-ов) обращений  знают о том, что в WordPress ЧПУ строятся через Постоянную ссылку страницы. Проще говоря, если вам нужно чтобы ваш плагин что-то выводил или просто отзывался по адресу http://сайт/myprofile,  вам необходимо чтобы была страница с постоянной ссылкой http://сайт/myprofile. Как правило разработчики в FAQ’ах или в readme к своим плагинам пишут что для работы плагина вам необходимо создать пустую или с определенным содержанием страницу. Как то это не серьезно получается, установил пользователь плагин, так его еще и просят страницу создать, а может и не просто создать и написать в ней какие-то магические слова по типу {CALL_MY_PLUGIN}, которые потом плагин прощупает и сработает.  Рискну предложить свой метод автоматизирующий весь этот рутинный процесс и не вешающий на плечи пользователя заботы о создании и удалении страниц для вашего плагина. Итак смотрим:

я думаю код достаточно понятен,  при активации плагина в MyPluginActivation создается страница, и записывается ее ID в параметре плагина PageID.  При деактивации плагина в MyPluginDeactivation страница с ID равным ранее сохраненному параметру PageID успешно удаляется. Пользователь при этом никак не в этом процессе не участвует. Единственное что можно было бы добавить, так это функционал проверки на существование страниц с таким же именем. Да бы к примеру своим именем my-page не перекрыть уже существующую страницу — но думаю это не сложно дописать.

В случае, если вам не нужно чтобы ссылка на страницу вашего плагина отображалась в общем списке ссылок на сайте (блоге), но при этом вы не хотите обременять пользователя в том чтобы он сознательно убирал из списка ссылок ссылку на ваш плагин или использовал всякие там плагины по типу Exclude Page и т.д., есть достаточно простое решение:

ну вот пожалуй и все… ).

PHP

DABackuper — автоматический бэкап по расписанию для DirectAdmin-панели

DABackuper — решение для тех кто хотел бы регулярно (по своему расписанию) и в автоматическом режиме (CRON) создавать бэкапы на сервере через доступ к DirectAdmin-панели. Итак, если на вашем хостинге есть DirectAdmin и вы хотели бы настроить автоматическое резервное копирование, то данный php-скрипт под названием DABackuper может вполне сгодиться. Скрипт я писал как раз для себя, тестировал на своем хостинге, результаты тестирования показали что все работает и теперь каждый день у меня в автоматическом режиме происходит резервное копирование. Итак, код скрипта DABackuper:

Не забудьте вписать свои данные (настройки для панели DirectAdmin). Учитывайте также что массив $post — это данные для моего хостинга, потому для настройки я бы советовал вам сначала расскомментировать строку:

и запустить скрипт в браузере, выбрать нужные опции соответствующие настройкам именно вашего хостинга и вашим предпочтениям, а дальше просто нажав на кнопку «Создать Резервную Копию» вы увидите именно ваши настройки, эти настройки необходимо будет вписать в массив $post.

Скрипт вы можете запускать как через браузер в ручном режиме, так и в автоматическом режиме настроив выполнение его в качестве CRON-задания.

PHP

Исчерпывающий парсинг ссылок в тексте

Необычное название поста я думаю все же объясняет отнюдь не новую проблему парсинга ссылок в тексте. Для тех кто не знает, «парсинг ссылок» — поиск всех ссылок (HTML тегов A) в каком-либо тексте. Задача поиска ссылок может встречаться  в разных случаях, к примеру при написании плагина подобно моему ExtLinks или же может быть вы пишите свой граббер.  Проблема поиска тегов A с помощью регулярного выражения в HTML-тексте, если бы они (ссылки) были написаны с учетом всех правил (валидности записи HTML) и вовсе не была бы проблемой. Однако одинаково правильное написание HTML-кода не всегда встретишь, потому и приходится придумывать чудные регулярки. Одной из таких  регулярок я и хочу поделится с вами:

 

PHP

Усовершенствуем substr() или анонс строки обрезанный по словам…

Про обрезку строк по словам уже много и долго писали. Но я рискну все же поделиться с Вами и своими мыслями по этому вопросу. Итак, задача: необходимо обрезать строку до определенного количества символов, но при этом не резать сами слова в строке. Есть множество решений этой проблемы и с помощью хитрых регулярных выражений, а также громоздких проходов по каждому символу в строке в цикле — мутанство!!! =). Мы же поступим иначе, отыщим самый последний символ пробела и обрежем строку по нему!

Итак, решение задачи:

 

Theme by Anders Norén