За месяц Сентябрь, 2011

Отлавливаем несуществующие ящики при рассылке

При организации E-mail рассылки собственными силами легко столкнуться с тем, что иногда в базу попадают несуществующие ящики (речь не о купленных базах для спама, а о собранной информации, например у покупателей или читателей блога, в которой они обязательно должны поставить галочку вроде “Согласен получать на email…”)

Конечно, первым делом проверяем адреса на валидность (кстати, регулярное выражение для проверки email, написанное  в соответствии со всеми правилами RFC чуть больше, чем может показаться неосведомленному пользователю). Следующим шагом можно проверить существование почтового сервера (существование сервера и то, что он принимает почту).

Однако, даже если адрес валидный, сервер существует и работает, но самого ящика на сервере может не быть. Такую информацию сервер просто так не сообщит. Как быть?.. Читать целиком »

Опубликовано Сентябрь 25, 2011 | автор: levik  |  Нет комментариев »

Мультизагрузка картинок jquery uploadify

В противоположность задаче, рассмотренной в статье про скачивание (загрузку с сервера)  иногда бывает нужно загрузить несколько файлов одновременно (или просто загрузить файл без обновления страницы). Встроенные HTML-формы и ajax (сам по себе) не позволяют загружать файлы без обновления страницы. Решается задача добавлением фрейма (фреймов), в которых и происходит загрузка, либо с использованием FLASH-загрузчика.

Удобный плагин для одновременной загрузки нескольких файлов с использованием Flash - JQuery uploadify . С возможностями плагина можно ознакомиться на официальном сайте. Там же можно посмотреть demo и найти рабочий пример

Некоторые сложности, которые могут возникнуть при работе с Uploadify-плагином : =читать дальше про jquery uploadify

Опубликовано Сентябрь 24, 2011 | автор: levik  |  Комментарий (1) »

Резервное копирование при помощи Acronis True Image Home

Программа Acronis True Image Home (условно бесплатная - пробуем 30 дней и покупаем) позволяет в несколько простых шагов создать резервную копию системы, раздела или скрытый раздел восстановления (так называемая зона безопасности Acronis)

Описание работы с программой можно найти помимо официальной документации (ru-pdf,en-html) в статьях на oszone и других ресурсах. Возможно, возникнут трудности с поиском пунктов меню - жмём “Перейти к главному окну (использовать все функции программы)” - в верхней части ищем “Инструменты и утилиты”.

Некоторые моменты, на которые следует обратить внимание: Читать целиком »

Опубликовано Сентябрь 20, 2011 | автор: levik  |  Комментарии (3) »

Установка PEAR, PHPUnit на Windows

Установка PEAR сводится к двум простым шагам:

  • скачать файл с архивом go-pear.phar в каталог с PHP
  • выполнить его командой  php go-pear.phar из консоли (cmd)

В процессе установки рекомендуется проверить правильность путей к ресурсам (12 всего), а в завершении - внести в реестр информацию из  PEAR_ENV.reg

Установка PHPUnit

Обновим PEAR-библиотеки:
pear update-channels
pear upgrade-all

Добавим каналы для PHPUnit:
pear channel-discover pear.phpunit.de
pear channel-discover components.ez.no
pear channel-discover pear.symfony-project.com

Установим
pear install phpunit/PHPUnit
* если при выполнении этой команды получен ответ:

No releases available for package “pear.phpunit.de/PHPUnit
install failed

поможет очистка кэша
pear clear-cache

И проверим корректность установки
phpunit --version

* Ошибка при подключения файла failed to open stream: No such file or directory in /usr/share/php/PHPUnit/Autoload.php - скорее всего установлена более ранняя версия PHPUnit

Установка XDebug

Скачиваем нужную версию с http://www.xdebug.org/download.php

Если есть сомнения в совместимости версий PHP и XDebug - можно воспользоваться инструментом на сайте XDebug
http://www.xdebug.org/find-binary.php - загрузить в textarea вывод функции php -i (или скопировать результат функции  phpinfo()) - и Вы получите полные инструкции по установке XDebug (как на Windows так и на Linux)

Опубликовано Сентябрь 12, 2011 | автор: levik  |  Нет комментариев »

Jquery - attribute or property (attr vs prop)

С версии 1.6.1 в JQuery изменилось обращение к атрибутам (attr)

http://blog.jquery.com/2011/05/12/jquery-1-6-1-released/

Если после обновления JQuery перестали работать атрибуты selected/defaultValue/selectedIndex (или вообще не работает JQuery как ожидается) - рекомендую ознакомиться с табличкой атрибутов/свойств JQuery

Attribute/Property .attr() .prop()
accesskey
align
async
autofocus
checked
class
contenteditable
defaultValue
draggable
href
id
label
location *
multiple
nodeName
nodeType
readOnly
rel
selected
selectedIndex
src
style
tabindex
tagName
title
type
width **

* For example, with window.location
** If needed over .width()

Опубликовано Сентябрь 7, 2011 | автор: levik  |  Нет комментариев »

Виртуальные FTP-каталоги (ftp-директории)

Многие FTP-серверы для Windows позволяют создавать виртуальные FTP каталоги (т.е. директория находится, например в F:\music, а по FTP открывается в ftp://server.ftp/media/music )

Как в Linux разместить виртуальный каталог в нужной директории FTP-сервера?

Однако, такую задачу легко решить средствами операционной системы - просто монтируя виртуальный каталог…

mount --bind /media/media/music/ /home/ftp/music/
mount --bind откуда(существующий каталог) куда(виртуальный)

Для сохранения такого расположения после перезагрузки можно разместить в /etc/fstab примерно такую строку:
/media/media/music/ /home/ftp/music/ none defaults,bind 0 0
Порядок тот же
откуда куда

Ссылки по теме -
man fstab
man mount

Опубликовано Сентябрь 5, 2011 | автор: levik  |  Нет комментариев »

Поиск шелл-скриптов (shell) на сервере и устранение последствий взлома

После взлома сайта злоумышленник как правило оставляет shell-скрипт, который позволяет удалённо выполнять различного рода команды.

Поиск Shell-скриптов на сервере можно осуществлять по различным параметрам - если взлом “свежий” это может быть дата изменения файла. Кроме того, как правило, в shell-скриптах присутствуют характерные команды. Для начала, следует выполнить поиск по каталогу с сайтом:

egrep -rlZ -e "gzinflate" /var/www
egrep -rlZ -e "eval\(str_replace" /var/www
grep -Rl "r57shell|c99madshell|eval\|base64_decode" /var/www
grep -RPn "(passthru|shell_exec|system|phpinfo|base64_decode|chmod|mkdir|fopen|fclose|readfile) *\(" /var/www

Ну и, конечно же, желательно найти “дырку”, через которую был осуществлён взлом - поиск в логах по имени вредоносных файлов.
# вместо shell.php подставляем имя файла с вредоносным
# кодом, который найден на предыдущем этапе
grep -rl 'shell.php' /var/log
#затем поиск в найденном файле
grep 'shell.php' ./mysite_custom.log
#и затем поиск по IP-шнику, с которого было обращение к вредному файлу
grep '127.0.0.1' ./mysite_custom.log

Конечно, это далеко не все способы, однако некоторые PHP-шеллы, а также “дырки”, через которые они были оставлены этот способ позволяет обнаружить.

Часто, PHP-шелл можно загрузить непосредственно на сервер (помимо проверки загружаемых файлов, для директорий загрузки имеет смысл выключать обработку файлов PHP, да и другие скрипты) - в .htaccess или в конфигурационном файле сервера (для Apache)
php_flag engine off
# или
RemoveType .pl .cgi .php .php3 .php4 .php5

И, конечно же, файл можно загрузить по FTP - используем рекомендации по хранению и созданию паролей

Опубликовано Сентябрь 1, 2011 | автор: levik  |  Комментарии (2) »