Китайская защита сайта от вирусов

Рубрики: Общее, Общие советы, Скрипты PHP  

Не секрет, что иногда сайты заражают вирусом.

Чем-чем? Вирусом. Он находится в iframe, и таким образом не виден посетителю. Но при этом посетитель успешно этот фрейм открывает и вирус хватает.

Как-как? Обычно внизу файла index.php располагается код, что-то вроде <iframe…>. При этом владелец сайта однозначно может сказать, что «ээ, дарагой, такова ранэшэ нэбэло, ээ!»

Как избавиться? Удалить этот код, сменить пароли на FTP (т.к. часто именно их и воруют).

В чем подвох? Подвох в том, что владелец сайта может «до последнего» не видеть вирус. Особенно, если вирус какой-нибудь новый. И даже Касперский не поможет.

В чем заключается моя «защита» и почему она «китайская»? Дело в том, что это скорее не защита, а оповестительная система, отключающая сайта, если вирус там поселился.

Как работает? Очень просто. Из учебника php следует, что закрывающий тег в конце файла можно опустить. То есть код:

<?php

echo «hello»;

тоже считается валидным и нормально работает.

Так вот, берем какой-нибудь WP, стираем в index.php нафиг закрывающий тег PHP (а именно вот этот: ?>). Все!

Чего ж будет-то? Если злоевек зальет Вам на сайт свой злоефрейм, то возникнет ошибка при исполнении этого файла php и сайт не откроется. Чем это важно? Важно тем, что владелец сайта, посещая свой сайт, сразу поймет, что на сайте поселился вирус, а посетители сайта не заразятся вирусом, т.к. сайт отключился.

Комментариев: (15)


Возможность убрать рекламу, юзер-френдли

Рубрики: Общее, Общие советы  

Реклама: начало кризиса, дешевый хостинг, автосалоны г одессы

Конечно, надоевшие баннеры уже всем… надоели. Но я нигде не видел такого решения проблемы: по умолчанию баннеры показываются (когда пользователь заходит на сайт), но у каждого есть в углу крестик. Нажав на этот крести, пользователь скрывает баннер (место просто становится пустым).

Логика: если пользователь увидел баннер и не кликнул по нему – он его уже не заинтересует, а будет только раздражать. «Прозрения» (когда 2 часа читаешь сайт, а потом вдруг понимаешь, что баннер-то мега-интересный) – редкое явление, почти не встречается.

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

Минусы: не подходит для оплаты по показам (а-ля «5$ за 1000 показов»), может быть неадекватно воспринято рекламодателями («мы тратим деньги на то, что пользователь не видит!»).

Как реализовать?

Очень просто. Оборачиваем баннер (предполагается, что это флеш или изображение) в div, в углу рисуем крестик ссылокой. При клике на ссылку срабатывает JavaScript, который записывает куки пользователю (да-да, а что, не знали, что это можно?). В куки содержится, например, имя скрытого баннера. При загрузке страниц PHP-скрипт (или что там у Вас на сервере) проверяет, есть ли куки с именем баннера и если уже есть, не отображает его.

Еще нужно предусмотреть возможность вернуть все «как было». Например вместо баннера показывать ссылку «показать баннер».

Комментариев: (12)


Автоматическое высчитывание количества дней до цели/события (PHP) – идея для манимейкеров

Рубрики: на PHP, на WordPress  

Реклама: копии часов интернет магазин, работа киев, смета скачать

Манимейкерам очень может помочь такая штука. Например, мы поставили цель выйти на какой-то доход за 5 месяцев. Конечно, первая мысль: «ууу, 5 месяцев, это много, я все успею!». Врят ли, с таким подходом.

Как видно из прошлого поста, сегодня мне кто-то в задницу воткнули шило, пока я спал, не иначе. Я поставил себе цель, и вынес в боковую колонку информацию о ней.

Наряду с обычной информацией о том, что за цель, сроки начала и конца, я сделал дополнительные поля. Первое – это состояние. Чего сейчас добился? Например по спорту у меня по нулям вообще. По деньгам тоже довольно печально (тут, правда, я еще не подсчитывал, сколько чего и где я зарабатываю, но наверняка не сильно больше, чем написал сейчас).

А третья вещь, которую я вообще ни у кого не видел, это автоматическое определение количества дней до окончания цели.

То есть блоггер сам заходит в свой блог и видит… Ага, мне осталось 7 дней до звонка окончания цели, нужно скорее что-то делать.

Реализуется на PHP за 1 минуту. Код следующий:

echo abs(gregorianToJD(«03″, «18″, «2010″)  – gregorianToJD(date(«m»), date(«d»), date( «Y»)));

Так вот реализовано у меня. Дата конца цели вписывается вместо 03, 18, 2010 (как понятно, 03 – месяц, 18 – день, 2010 – год конца цели). Текущая дата вычисляется автоматически. Значение на всякий случай берется по модулю (т.к. иногда может оказаться по сути верным, но с другим знаком).

Для WordPress все просто: в файле sidebar.php (или где хотите напечатать количество дней до цели) ставим этот код в тегах <?php и ?>.

Комментариев: (8)


Как следить за выполнением скриптов на PHP и управлями ими в длинных циклах

Рубрики: на PHP  

Реклама: виды гвоздик, платья Allure Diagonal, способы похудеть

Возможно, Вам приходилось когда-то писать скрипты, где совершалось какое-то долгое и нудное действие. Ну например – грабился сайт или создавалось 10000 картинок с вотермарками. И вот ведь какое дело – совершенно непонятно, там вообще что-нибудь работает или все повисло? Особенно это тяжело, когда скрипт находится на стадии тестирования. Может быть он пошел по замкнутому кругу (ну скажем начал обрабатывать фотографии заново), а мы не в курсе?

Я сейчас дописывал паука, который просто ползает по одному и тому же сайту (наподобие того, который у гугла или яндекса, только гораздо скормнее). Понятно, мне тестировать его тяжело – а вдруг он по одним и тем же ссылкам полез? А я не знаю? Или еще что-нибудь этакое, залез, например, на внешний сайт по ошибке и по нему пошел? И я придумал два способа для управления и слежения за подобного рода скриптами.

Итак, мониторинг. У меня там все просто – паук знает ссылки, которые еще не обошел и количество страниц, которое уже обошел, две переменные.

Создаем функцию а-ля

function logit($msg){
$file = @fopen («log.txt», «w»);
@fwrite ($file, $msg);
@fclose ($file);
}

И в нашем «мега-цикле» вызываем logit ($var1.$var2); – все. Обе переменные записались в файл. А это значит, что я могу открыть его через браузер и лицезреть в реальном времени прогресс обхода (переменные var1 и var2 изменяются и записываются в файл). Жми F5, да радуйся.

Например, мой паучОк обошел мой же блог за 2 минуты и нашел 450 страниц (в Яше 400, в гугле 240) и я лицезрел меняющиеся цифры в такой вот строчке: «done: 450, fifo: 0, time: 130.87 sec» (это для примера, я не о пауках конкретно)

Дальше, управление.

Немного продолжаю свою мысль. Понятно, что когда скрипт «ушел» в работу, то мы уже можем не дергаться – никакие кнопки и прочие шаманства в браузере работать не будут (даже аякс, скрипт-то в «бесконечном» цикле).

А что, если использовать другой файл как шлюз для общения со скриптом? Ну например, скрипт во время выполнения записывает прогресс в вышеприведенный файл, а из другого периодически читает – что ему нужно делать. Если файл пустой, то скрипт спокойно выполняется. А если в файле появилась запись stop, например, то скрипт аварийно завершается (выход из цикла или вообще exit). Плюс к этому можно создать другой скрипт, скрипт-повелитель :), при запуске которого основной скрипт (у меня – паук) будет останавливаться.

Я имею ввиду, вот запустил я crawler.php. Он там чего-то делает, я не знаю что. Я могу даже браузер закрыть, т.к. от этого процесс не завершится, а я уже останусь вообще без контроля. Но есть чудо скрипт stop.php, я запускаю его, он пишет в какой-то файл типа gate.txt слово «stop», а crawler.php этот файл периодически проверяет и если находит такое слово – прекращает работать.

Кстати, я раньше думал, что если нажать «стоп» в браузере – скрипт тоже остановится. Хрен, как бы не так. Он будет работать, пока не сделает все, что надо. А если он войдет в бесконечный цикл, то он не остановится. Так что достаточно запустить 50 таких скриптов и можно перезагружаться смело.

Такие вот идеи в 4.35 утра.

Комментариев: (7)


Рок-музыка и Drupal (немного о том, как я сделал стартап за 45 минут).

Рубрики: Drupal  

Я давно хотел сделать сайт о рок-музыке и гитаре в целом. Вернее о гитаре и немного о рок-музыке. Я уже писал, что пытаясь выбрать CMS для этого сайта, столкнулся с некоторыми проблемами. В тот раз я выбрал Joomla. Но после написания того поста я все снес и поставил Drupal. Почему? Убедили читатели :) И уже давно хотелось в нем нормально разобраться. И, похоже, не зря.

Кстати, я его сделал. У меня теперь мега-портал: «Для Гитары» (индексируйся, радость моя, индексируйся!)

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

В итоге вышла вот эта статья. Боюсь, что я не смогу объяснить тут все подробно. Но я объясню самое главное, без чего даже непонятно «как это все работает».

Для начала качаем и сам друпал. Сразу же качайте к нему русский перевод (Downloads->Translations, 7ая страница или 8ая). Архив с файлами перевода нужно разархивировать и залить в каталог с друпалом.

Установка очень простая и ее я описывать не буду. Как обычно – вводим данные для базы, имя админа и еще всякую ерунду, жмем 4 раза на «Далее» и все.

А вот дальше начинается самое интересное. То есть это для профи интересное, а для того, кто видит друпал в первый раз – ад кромешный. Я не буду описывать технические характеристики, возможности и прочую ерунду, а перейду сразу к практике.

Для начала нужно включить необходимые модули. Идем на Управление -> Конструкция -> Модули и включаем как минимум следующее: «Comment» (позволяет добавлять комментарии к материалам), «Database logging» (для всяческой безопасности), «Locale» (если вырубить, то все станет опять английским для новых юзеров), «Menu» (для настройки меню), «Path» (для красивых ссылок типа /hello.htm), «Poll» (опрос хотите?), «Profile» (чтобы спрашивать у пользователя всякие гадости при регистрации), «Search» (поиск по сайту), «Taxonomy» (для того, чтобы сделать клевую публикацию материалов). Это все стандартные модули и нужно только проставить галочки.

А вот модули, которых в стандартной установке нет. Найдите их на drupal.org и установите, очень пригодится. Привожу с описанием.

BUEditor – хороший редактор текстов, замена стандартному.
IMCE – позволяет загружать изображения на сервер прямо во время написания текста, что куда удобнее, чем загружать их руками по FTP и приводить ссылки самостоятельно.
Taxonomy Menu – выводит таксономию в боковое меню. Жизненно необходимо, если нет желания ковыряться в ссылках ручками (о таксономии вообще попозже).

Все, на орбиту вышли. Теперь нужно переходить на первую космическую. Без теории о том, как друпал работает все-таки не обойдусь (черт, а так лень было писать).

Попробую в силу скудных способностей объяснить, как организованы данные в друпале. Дело в том, что он очень сильно (в большую сторону) отличается от других CMS по гибкости, а благодаря этому охуенно путает того, кто пытается в нем разобраться. Знаний программирования он не требует, но мозгами шевелить придется.

Друпал как бы построен на абстракциях. Например есть абстрактный «материал», который может иметь много вполне определенных типов. Например, если бы этот блог был на друпале, то материалом являлся бы пост и имел бы какое-нибудь такое же название, типа «пост в блоге». В друпале материалом является вообще все – посты в блогах юзеров, заметки, страницы, опросы, что угодно. И все это идет в общую ленту. Например, не удивляйтесь, что создав опрос и припрепив его к боковой колонке он попадет и на главную страницу (по аналогии с блогом). Нужно просто отредактировать его и убрать галочку «Публиковать на главной».

Посмотреть типы материалов можно в Управление -> Содержание -> Типы материалов.

Имейте ввиду, когда Вы ставите какой-нибудь модуль, он запросто может самостоятельно создать новый тип материала (каков наглец!). Например, модуль «Polls» (опросы) создает тип материала «Опрос». Таким образом друпал понимает что чем является и может сортировать разные материалы, например для того, чтобы на главную выводить только последние записи в блогах пользователей и статьи.

(Я вообще сейчас объясняю то, во что сам въезжал долго. Если бы мне кто такое рассказал, я бы сэкономил кучу времени.)

Теперь о публикации материалов. Или другими словами – да как тут вообще статью-то в меню засунуть?! Когда я первый раз поставил друпал я не понял именно это, из-за чего сразу занес его в список «никогда-не-ставить-больше CMS».

Для классификации материалов, а заодно и организации меню, существует модуль таксономия (к производству таксичных отходов имеет прямое отношение, да-да!). Я долго пытался понять, что же мне пытаются сказать умные парни в умных статьях по описаниям этого модуля и самую близку аналогию, которую я смог привести это – теги в древовидном виде.

Сейчас попробую объяснить на примере. Создадим в Управление -> Содержание -> Таксономия словарь «Блюда», словарь нужно привязать к типу материала Заметка (это вообще основной тип материала в друпале), делается это там же, при создании. Перейдем в этот словаь и создадим там термины «Супы», «Вторые блюда», «Десерты».

А теперь создаем материал (Создать материал -> Заметка), предположим, о борще, и привяжем его к Супам (в поле «Блюда» впишите «Супы»). Привязка материала немного дебильная, но что делать. То есть получилось, что у нас эта статья имеет «тег» Супы, а он в свою очередь вложен в Блюда. Вот и создали мы чудо-меню. [для знающих друпал тут поясню: я могу и ошибаться, но у меня построено именно так и все работает]

Если то, что мы насоздавали в Таксономии не вывелось в меню, значит не активирован модуль Taxonomy Menu.

Кстати, другие наглые модули тоже могут использовать Таксономию «без разрешения», имейте ввиду.

Что получилось? Поставили друпал, написали статью, а это самое важное. Теперь дальше.

Чтобы вывести в разные стороны сайта разные влевые модули (типа опроса или последних зарегистрировавшихся), перейдите в Управление -> Конструация -> Блоки. Там все понятно, я думаю, без объяснений.

Иногда гости не могут видеть тот или иной раздел или статью или модуль. Чтобы это поправить, идите в Управление -> Управление пользователями -> Разрешения, и ставьте галки. Здесь друпал меня очень порадовал, обширные возможности для настройки.

Установить тему легко – качаете друпал-тему (только учтите, что обычно темы для 5ой версии не подходят для 6ой и т.п.), заливаете в themes и устаналиваете в настройках Управление ->Конструкция -> Темы оформления. Модули так же (см. выше).

В общем-то это вроде бы все, что нужно для начала. Дальше разберетесь сами. Пойду тоже поковыряюсь :)

Комментариев: (31)




dimoning.ru
SEO и программирование.
  • Рубрики:



  • Рассылка:

  • Дополнительно:

  • По месяцам:

  • Счетчики:

    Яндекс цитирования

  • dimoning.ru © 2008-2011 г.
    Все материалы авторские, но их можно копировать с указанием прямой ссылки на источник.