tushov.ru

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

Tag: программирование

Page 2/3

Joomla

Проблема «невидимых» пользователей в Joomla 1.5.x

Сегодня столкнулся с проблемой «невидимых» пользователей в Joomla 1.5. Проблема проявилась когда очередной пользователей на одном из моих проектов написал о том что он не может войти на сайт под своим аккаунтом. Зайди в панель администрирования, и проведя поиск по емайлу (логину) обратившегося — я не нашел соответствующего аккаунта. Покопавшись в почте — увидел уведомление что такой пользователь регистрировался на моём сайте. Стало интересно еще больше :). Ну подумал я — все дело наверное в бэкапах, может очередной раз обновляя я перепутал бэкапы БД, но не тут то было когда я обнаружил запись аккаунта  в таблице jos_users. В тоже время в соотвествующих данному юзеру записей в таблицах jos_core_acl_aro и jos_core_acl_groups_aro_map не было.

Вылечилось все двумя SQL-запросами:

однако теперь вот думаю я, что это было? как такое могло произойти, что в jos_users соотвествующая запись добавилась а в эти таблицы нет.. Странно.. сбой на сервере? не все SQL-запросы прошли?  Но таких пользователей я насчитал уже 6 штук.. буду искать причины…

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 и т.д., есть достаточно простое решение:

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

WordPress

Вывод статистики WordPress в виде счетчика =)

Данный «счетчик» отображает время генерации страницы WordPress, количество выполненных запросов к БД, объем выделенной (затраченной) оперативной памяти. Вот так может выглядеть счетчик статистики (слева счетчик, справа стандартный счетчик LiveInternet):

а теперь непосредственно сам код счетчика:

 

PHP

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

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

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

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

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

PHP

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

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

 

Joomla

Автоматическая публикация материалов на сайте добавленных пользователями

Совсем маленький плагин AutoPublished с говорящим названием. Суть плагина проста, он позволяет автоматически одобрять (публиковать) все материалы добавляемые пользователями через Front-End интерфейс сайта. Есть множество решений этой проблемы и с помощью установки дополнительных расширений и при помощи правки прав пользователей в коде Joomla. Но я решил сделать это плагином, надеюсь кому-нить кроме меня еще пригодится!

Внимание всем кто скачал этот плагин до 31 декабря 2009 — обновитесь до версии плагина 1.1. В версии 1.0 существует проблема установки срока публикации из админки для материалов. В Версии 1.1 плагина эта проблема исправлена!

Скачать плагин AutoPublished v.1.1

PHP

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

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

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

 

Theme by Anders Norén