Цитата мудреца

Голосование

Если бы Вы жили в обществе, где всё, что Вам нужно можно было бы получить бесплатно, пошли бы Вы работать для пользы этого общества?
 
Система Orphus. Если вы заметили ошибку на сайте, нажмите сюда.
Загружается, подождите...
Начало сайта Материалы сайта Программы PHP-скрипты

Версия для печати

Ограничение на скорость выдачи страниц одному пользователю

Здесь представлены некоторые мои разработки на PHP. Это в, основном, служебные скрипты, которые работают в составе других скриптов и не могут быть протестированы здесь непосредственно.

Vit писал(а):define ('AD_DIRNAME', $_SERVER['DOCUMENT_ROOT'] . 'http://webftp.z8.ru/index.php/tmp_path');

Не нужно сюда писать адрес в интернете. Нужно записать путь от корня сайта к папке, где будут лежать временные файлы.
У меня это выглядит так:
Код: Выделить всё
define ('AD_DIRNAME', $_SERVER['DOCUMENT_ROOT'] . '/tmp/antiddos');


Vit писал(а)://Выполняем запрос к логам. Нужно указать путь и имя лог-файла
exec('cat / home/vit08/www/site1/ samhain.z8.ru /logs/access_log | egrep \'(' .
Или вставлять нужно вот так: exec('cat / home/net2ftp/samhain.z8.ru/logs/access_log | egrep \'(' .

Вы написали как будто два совершенно разных сайта.
В первом случае нужно написать:
Код: Выделить всё
   exec('cat /home/vit08/logs/access_log | egrep \'(' . str_replace('.', '\\.', $_SERVER['REMOTE_ADDR']) . ')|(' . str_replace('.', '\\.', $host) . ')\' | sort -k 4 >' . AD_DIRNAME . '/dump.txt');

А во втором случае:
Код: Выделить всё
   exec('cat /home/net2ftp/logs/access_log | egrep \'(' . str_replace('.', '\\.', $_SERVER['REMOTE_ADDR']) . ')|(' . str_replace('.', '\\.', $host) . ')\' | sort -k 4 >' . AD_DIRNAME . '/dump.txt');


Vit писал(а):А в остальном я так понимаю ничего не надо добавлять, просто затем активировать модуль в панели админки и задавать (направлять действия скрипта) там где необходимо?

Ничего в панели админки активировать не надо. Потому что этот модуль не прописывается в вашем движке. Его надо вставлять руками в скрипт. Поэтому админка о его существовании ничего знать не будет.
Ответить


Добрый день Андрей! По моему мнению сделал так как полагается всё. Прошу всё же подредактировать если я неправильно сделал. Все пути прописал, и вроде всё понял. И как я понимаю, анализируя лог файлы определил где и что часто вызывается. Судя по тому что было написано smirna index.php есть и в самих шаблонах и в корне сайта. Сначала не мог понять в модулях и компонентах нет индекс, но затем вновь прочёл и решил, что можно ставить в различные скрипты компонентов php ? Вопрос первый: а могу я к примеру если у меня скажем разные шаблоны по категориям взять и поставить Ваш модуль, (поскольку на каждом разделе различные скрипты работают)?- Просто вставить в верхней части в index.php шаблона перед body и всё? Тогда скажем раздел в меню Новости будет защищён Вашим модулем?
Вопрос второй: я include 'antiddos.php'; вставлял в одном случае в index.php одного из шаблонов, а во втором случае в компонентный файл php. Изменений не произошло. Я вновь что-то делаю не так?
С уважением Виталий
PS. Если я вновь написал что-то из области чайников, если не трудно пошагово чуток напишите куда надо заходить и в какую строку вставлять, на примере обыкновенном если не трудно. Движок Joomla! 1.0.15
Ответить


Vit, сразу маленькая поправка. Вы всё время говорите о шаблонах. Шаблоны отвечают за внешний вид сайта. Лучше этого не касаться вообще. Модуль нужно вставлять не в шаблоны, а в php-скрипты. Лучше в какой-нибудь такой, который вызывается всеми скриптами, вызываемыми пользователями.
Например, есть index.php, есть viewforum.php, есть viewtopic.php (я беру для примера phpBB). Все они вызывают один общий модуль - functions_display.php. Вот в него и есть смысл вставить вызов antiddos.php.
Если же Вы всё же хотите привязать его к шаблонам, то Вам нужен шаблон, который отвечает за общий дизайн и загружается самым первым. В случае phpBB, это overall_header.html. И надо вызывать его в самом начале. НО! Шаблоны обрабатываются достаточно поздно. Поэтому Ваши скрипты будут уже в большей части отрабатываться, прежде чем модуль их остановит. Поэтому шаблоны - худший из возможных вариантов.

По поводу Жумлы ничего не могу сказать - не знаю её совсем.
Ответить


СПАСИБО АНДРЕЙ!

Андрей день добрый! Спасибо наконец-то я теперь всё в полном объёме уяснил! Просто вероятно я не мог понять из-за того, что не совсем пока ещё дружу с программированием, и потому в своей Джумле не знал куда приткнуться. Всё установил в корень index.php, и всё же позволю себе некоторую наглость попросить Вас о заключительном моменте, о котором написал Вам на почту.
С уважением Виталий
Ответить


SMF 1.1

Добрый день!
Поставил на Joomla 1.5 - прописал скрипт в начале шаблона - все вроде работает: по крайней мере при повторном нажатии на страницу ее вывод блокируется - гуд.
Настал черед SMF - добавил, работает, но: форум по умолчанию после ответа возвращается в тему, а скрипт это сделать ему и не дает - Ошибка 503 (Service Unavailable), посему логичнее сделать блокировку после 2 посыла запроса - на третьем, ну и на странице поставить скриптик на Java отсчитывающий время и автоматом обновляющий страницу. А?
В случае работы скрипта на Joomla + SMF папка tmp_path общая или каждому своя?
Ответить


В моём движке на Притчи.ру редирект делается специальной командой, которая блокирует проверку, а модуль проверяет, не является ли это редиректом.
В CMS-ках такое тоже можно сделать, ибо редирект делается, обычно, специальной функцией, а не просто посылом соответствующего заголовка.

У меня это сделано так.
В модуле редиректа:
Код: Выделить всё
   $f_name   = $_SERVER['DOCUMENT_ROOT'] . $TmpPath . '/r' . $_SERVER['REMOTE_ADDR'];
   $f = fopen($f_name, 'w');
   fclose($f);

В специальной папке создаётся файл, начинающийся с буквы r и содержащий дальше вызывающий ip-адрес.

В модуле же идёт проверка:
Код: Выделить всё
/*
*--------------------------------------------------------
* Следующая проверка определяет, производится ли редирект
* для данного ip-адреса
*--------------------------------------------------------
*/
$ad_IsRedir      = false;
$ad_TicketFname = AD_DIRNAME . '/r' . $_SERVER['REMOTE_ADDR'];
if (file_exists($ad_TicketFname))
{
   $ad_IsRedir = true;
   unlink($ad_TicketFname);
}

if (!$ad_IsRobot && !$ad_IsRedir)
{
   /*** Чтение каталога и удаление старых файлов ***/


Но есть и другое решение: вызывать модуль только в случаях явного отображение страницы с информацией. В случае же каких-либо страниц, типа уведомления о том, что сообщение отправлено или каких-либо адресов с действием, просто не вызывать модуль. Я сам это не пробовал - не было необходимости. Это просто теоретически.
Ответить


Пред.

Вернуться в PHP-скрипты



Кто сейчас на сайте

Зарегистрированные пользователи: MSN [Bot], Yahoo [Bot], Yandex [bot]