tushov.ru

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

Tag: полезные советы

Page 2/2

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-задания.

Joomla, PHP

Реализация AJAX-модулей в Joomla 1.5

В Joomla 1.5.x AJAX-запросы внутри компонентов можно посылать через специальный файл index2.php — отличие которого от стандартного состоит в том что он не загружает шаблон Joomla, а только выводит содиржимое сгенерированное непосредственно компонентом. Т.е. к примеру запрос вида http://ваш_сайт/index2.php?option=com_frontpage — покажет на странице «чистый» вывод компонента com_frontpage. Такого  рода запросы очень удобны при реализации AJAX-вызовов в компонентах. Однако маршрута вызова исполнения и вывода конкретного модуля в Joomla увы не предусмотрено. На данный момент есть различные методы реализации AJAX-вызовов модулей в Joomla как правило за счет специальных плагинов или компонент обрабатывающие AJAX-запросы. На мой взгляд модуль  должен быть самодостаточным (автономным) и по возможности не требовать установки каких-либо компонент или плагинов реализующих проброс AJAX-запросов к нему. Для того чтобы не терять возможности API Jooml’ы и не городить каждый раз какой-то особый функционал для AJAX-модулей, я сделал простое решение для себя:
в своих модулях в которых используются AJAX-вызовы я просто использую сделанный мной файл ajax.php, следующего содержания:

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

Пример модуля реализованного по вышеописанной технологии.

Архив

Немного об оffice space и не только…

Перепечатка материала от 19.03.2008

Тезисы из книги Тома Демарко и Тимоти Листера «Человеческий фактор: успешные проекты и команды»:

1) Пока сотрудники находятся в шумных и стерильных загонах, не дающих нормально работать, нет смысла улучшать что-либо кроме рабочих мест

2) Необходимость оставатся дома задерживаться на работе, приходить раньше чтобы спокойно поработать — убийственное обвинительное заключение против офисной среды.

3) Лучшие работники накапливаются в определенных организациях, в то время как в других собираются худшие (эффект Миллза)

4) В результате проведенных тестов выяснилось что наиболее производительные сотрудники работают в более тихих, более уединенных, более просторных и лучше защищенных от внешнего вмешательства местах

5) Экономию на офисном пространстве следует оценивать относительно риска потери эффективности труда сотрудников

6) Ваши конкуренты могут работать в десять раз эффективнее. Если вы не знаете об этом то не можете принять меры. Зато рыно все поймет. Он предпримет собственные шаги для выправления ситуации, и эти шаги будут не в вашу пользу.

7) Поток — состояние глубокого, почти медидативного погружения в работу. Сотрудник который постоянно пытается войти в поток и постоянно вынужден отвлекаться — человек недовольный. Все что мешает сотруднику достичь состояния потока, снижает его производительность и удовлетворенность работой.

Theme by Anders Norén