Помогите дописать условие в плагине Джумлы

D
На сайте с 28.06.2008
Offline
980
164

Есть самописный плагин Джумлы, который защищает сайт от назойливых парсеров и прочей нечисти.

Раз в 10 минут он парсит лог Nginx и при превышении заданного лимита выводит гугл капчу, пока ее не пройдешь - контент не получишь.

Давайте не будем отвлекаться на вопросы "а зачем это нужно", "а как же поисковые боты", все работает уже лет 5 как и все норм, речь не об этом.

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

Вот часть кода плагина, отвечающего за вывод капчи.


//preg_match('~(.*)/price~', $_SERVER['REQUEST_URI'], $urlPrice, PREG_OFFSET_CAPTURE);
if(!empty($count))
{
$doc = JFactory::getDocument();
$doc->addScript('/js/site.cap.js');
$this->content = '<div id="kapcha"></div>';
}
/*
elseif (!empty($urlPrice[0][0])){
$doc = JFactory::getDocument();
$doc->addScript('/js/site.cap.js');
$this->content = '<div id="kapcha"></div>';
}
*/

}
}
return;
}

function onAfterRender()
{
if(!empty($this->content))
{
$content = JResponse::getBody();
$content = preg_replace('#(<div id="Center">)(.+)<!-- code -->#is', '$1<h1>Пройдите проверку, что Вы не робот</h1>'.$this->content, $content);
JResponse::setBody($content);
}
}
}

В итоге на странице нужного раздела появилась капча, но при ее прохождении страница просто перезагружается и снова капча.

Что я упустил?

Новый код, что я добавил - выделил жирным.

Так обычно - капчу проходишь, страница перезагружается и показывается контент.

Я так думаю что у меня вечно срабатывает условие elseif (!empty($urlPrice[0][0])){

Можно ли это обойти или не в этом ошибка?

IL
На сайте с 20.04.2007
Offline
412
#1
Dram:
Вот часть кода плагина, отвечающего за вывод капчи.

1) А где часть кода, отвечающая за её обработку? =)

2) и где устанавливается $urlPrice?

D
На сайте с 28.06.2008
Offline
980
#2

ivan-lev,

1. Да вроде нет этой части - как я понимаю - прошел капчу и функция function onAfterRender() тебя пропустила дальше.

2. Это вообще не понял, это просто проверка на часть урла

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий