
Быстрый поиск
Введите фрагмент названия статьи для поиска
Проверка принадлежности IP-адреса заданному диапазону
19.11.2008 | Категория: Web-мастеру и не только | Автор: ManHunter
Проверка вхождения IP в заданный диапазон может применяться во многих ситуациях. Например бан всей подсетки злоумышленника, принудительное ограничение скорости для зарубежного трафика, переадресация на различные разделы сайта в зависимости от провайдера пользователя и т.д. Я использую такие функции:Code (PHP) : Убрать нумерацию
- // ------------------------------------------------------------
- // Проверка вхождения IP в заданный диапазон
- // На входе:
- // $ip - массив октетов проверяемого IP
- // $ip_start - массив октетов начала интервала
- // $ip_end - массив октетов конца интервала
- // В интервалах допускаются маски '*'
- // На выходе: TRUE или FALSE, входит IP или нет в диапазон
- // ------------------------------------------------------------
- function chk_ips($ip,$ip_start,$ip_end) {
- for ($i=0; $i<4; $i++) {
- if ($ip_start[$i]=='*') { $ip_start[$i]='0'; }
- if ($ip_end[$i]=='*') { $ip_end[$i]='255'; }
- }
- $ip_num=ip2long(join('.',$ip));
- if ($ip_num>=ip2long(join('.',$ip_start))
- && $ip_num<=ip2long(join('.',$ip_end))) {
- // IP входит в интервал
- return true;
- }
- else {
- // IP не входит в интервал
- return false;
- }
- }
Читать статью целиком »
Просмотров: 18250 | Комментариев: 1
Отправка сообщений на ICQ из PHP-скриптов
09.11.2008 | Категория: Web-мастеру и не только | Автор: ManHunter

Отправка сообщений на ICQ из PHP-скриптов
Для отправки сообщений на ICQ из PHP-скриптов очень удобно использовать готовый класс WebIcqPro от автора Сергея Акудовича. Этот класс может послужить основой для создания ICQ-роботов, системы оповещения о различных событиях с сайтов, удаленного администрирования через ICQ и многого другого. WebIcqPro не требует установки на сервере дополнительных компонентов и библиотек. Достаточно подключить через include сам класс в ваш PHP-скрипт и воспользоваться его методами и свойствами. Для работы WebIcqPro требуется PHP 5.2.0 и выше. Класс активно развивается и скоро будет включать в себя практически все функции протокола Oscar. Если по каким-либо причинам на сервере установлена более старая версия PHP, то можно воспользоваться облегченной версией класса WebIcqLite. В ней есть только функции отправки и получения сообщений, но обычно этого вполне достаточно. Класс неплохо документирован, все описания на русском языке, методы и свойства приведены с примерами использования. Очень хороший скрипт, пользуюсь сам и другим рекомендую.
Читать статью целиком »
Просмотров: 15592 | Комментариев: 16
Деобфускация скриптов PHP и JavaScript
26.10.2008 | Категория: Темная сторона Силы | Автор: ManHunter

Деобфускация скриптов PHP и JavaScript
Одним из наиболее надежных на сегодняшний день способов защиты скриптов от изучения и модификации является обфускация.
Обфускация (от лат. obfuscare, "затенять, затемнять") - запутывание кода программы, то есть приведение исходного текста к виду, сохраняющему функциональность программы, но затрудняющему анализ, понимание алгоритмов работы и модификацию.
В отличие от однозначно обратимого шифрования и упаковки, обфускация представляет собой необратимое действие. Это значит, что восстановить код скриптов до первоначального вида не представляется возможным. Все без исключения обфускаторы PHP и JavaScript работают двумя способами: из исходного текста удаляются переносы строк и незначимые пробелы, а имена классов, переменных и функций заменяются на бессмысленный набор символов. Эти действия могут как комбинироваться, так и выполняться независимо.
Читать статью целиком »
Просмотров: 35731 | Комментариев: 20
Работа с недокументированными API WHM и cPanel
20.10.2008 | Категория: Web-мастеру и не только | Автор: ManHunter

Работа с недокументированными API WHM и cPanel
cPanel является одной из самых популярных коммерческих панелей управления аккаунтами на серверах виртуального хостинга. Все действия выполняются обычно через web-интерфейс, но для использования в ваших проектах авторами предоставляется API.
Читать статью целиком »
Просмотров: 8321 | Комментариев: 9
Проверка похожести двух слов
11.10.2008 | Категория: Web-мастеру и не только | Автор: ManHunter
Точное сравнение двух символьных строк, даже регистронезависимое, выполнить нетрудно. А как быть, если в одной их них встречаются символы другого алфавита, похожие по написанию? Так, буква "E" в русской и английской раскладке имеет одинаковое написание, или вместо русской "Н(н)" можно написать английскую "H(h)". Этим могут воспользоваться всякие ублюдки, например оставить сообщение на форуме якобы от администрации, зарегистрировав ник, внешне похожий на ник одного из админов. Для проверки похожести двух строк я использую следующую функцию:Code (PHP) : Убрать нумерацию
- // -----------------------------------------------------
- // Функция проверки похожести двух слов
- // Параметры: $name1 и $name2 - слова для проверки
- // $register = TRUE - проверка регистронезависима
- // = FALSE - проверка с учетом регистра
- // На выходе: TRUE - слова похожи, FALSE - отличаются
- // -----------------------------------------------------
- function chk_similarity($word1, $word2, $register=false) {
- // Очистить слова от служебных символов
- $word1=eregi_replace("[^0-9a-zа-я]","",$word1);
- $word2=eregi_replace("[^0-9a-zа-я]","",$word2);
- // Возврат FALSE если длина слов различается
- // или хотя бы одно из них пустое
- if ((strlen($word1)!==strlen($word2)) || strlen($word1)*strlen($word2)==0) {
- return false;
- }
- // Заполнить таблицу соответствий
- $pattern1="";
- $pattern2=Array();
- $pattern1.="aа";
- $pattern2[]="[аa]";
- $pattern2[]="[аa]";
- $pattern1.="AА";
- $pattern2[]="[АA]";
- $pattern2[]="[АA]";
- $pattern1.="BВ";
- $pattern2[]="[BВ]";
- $pattern2[]="[BВ]";
- $pattern1.="bь";
- $pattern2[]="[bь]";
- $pattern2[]="[bь]";
- $pattern1.="cс";
- $pattern2[]="[cс]";
- $pattern2[]="[cс]";
- $pattern1.="CС";
- $pattern2[]="[CС]";
- $pattern2[]="[CС]";
- $pattern1.="eе";
- $pattern2[]="[eе]";
- $pattern2[]="[eе]";
- $pattern1.="EЕ";
- $pattern2[]="[EЕ]";
- $pattern2[]="[EЕ]";
- $pattern1.="HН";
- $pattern2[]="[HН]";
- $pattern2[]="[HН]";
- $pattern1.="iI1l";
- $pattern2[]="[iI1l]";
- $pattern2[]="[iI1l]";
- $pattern2[]="[iI1l]";
- $pattern2[]="[iI1l]";
- $pattern1.="kк";
- $pattern2[]="[kк]";
- $pattern2[]="[kк]";
- $pattern1.="KК";
- $pattern2[]="[KК]";
- $pattern2[]="[KК]";
- $pattern1.="MМ";
- $pattern2[]="[MМ]";
- $pattern2[]="[MМ]";
- $pattern1.="nп";
- $pattern2[]="[nп]";
- $pattern2[]="[nп]";
- $pattern1.="oо0";
- $pattern2[]="[oо0]";
- $pattern2[]="[oо0]";
- $pattern2[]="[oо0]";
- $pattern1.="OО0";
- $pattern2[]="[OО0]";
- $pattern2[]="[OО0]";
- $pattern2[]="[OО0]";
- $pattern1.="pр";
- $pattern2[]="[pр]";
- $pattern2[]="[pр]";
- $pattern1.="PР";
- $pattern2[]="[PР]";
- $pattern2[]="[PР]";
- $pattern1.="rг";
- $pattern2[]="[rг]";
- $pattern2[]="[rг]";
- $pattern1.="TТ";
- $pattern2[]="[TТ]";
- $pattern2[]="[TТ]";
- $pattern1.="uи";
- $pattern2[]="[uи]";
- $pattern2[]="[uи]";
- $pattern1.="xх";
- $pattern2[]="[xх]";
- $pattern2[]="[xх]";
- $pattern1.="XХ";
- $pattern2[]="[XХ]";
- $pattern2[]="[XХ]";
- $pattern1.="yу";
- $pattern2[]="[yу]";
- $pattern2[]="[yу]";
- $pattern1.="YУ";
- $pattern2[]="[YУ]";
- $pattern2[]="[YУ]";
- $pattern1.="З3";
- $pattern2[]="[З3]";
- $pattern2[]="[З3]";
- $pattern1.="ч4";
- $pattern2[]="[ч4]";
- $pattern2[]="[ч4]";
- $pattern1.="Ч4";
- $pattern2[]="[Ч4]";
- $pattern2[]="[Ч4]";
- // Составить регулярное выражение для проверки
- $tmp="^";
- for ($i=0; $i<strlen($word1); $i++) {
- $letter=$word1[$i];
- $pos=strpos($pattern1,$letter);
- if ($pos===false) {
- $tmp.=$letter;
- }
- else {
- $tmp.=$pattern2[$pos];
- }
- }
- $tmp.="$";
- // Возврат TRUE - слова похожи или равны
- // FALSE - слова отличаются
- return($register?eregi($tmp,$word2):ereg($tmp,$word2));
- }
Читать статью целиком »
Просмотров: 5077 | Комментариев: 14


