Блог старого компьютера

Блог старого компьютера


Главная Joomla Капча в отзывы JoomShopping

Капча в отзывы JoomShopping

12.05.2015 17:05 Администратор Joomla
Печать PDF

jreview4Один из сайтов на компоненте jomshopping стало буквально заваливать спамными отзывами о товаре. Поглядев в интернете путней капчи для него не нашле, да о чем я, вообще ничего нормально не нашел кроме не работающего плагина и изобретения какого то "замечательного" программиста у которого в комментах написано что проверка капчи не работает. По скольку порой искать пострые пути выходит дороже чем сделать самом то выбираем второе. И так на сайте использующем компонент JoomShopping или как его порой называют com_jshopping для внедрения капчи делаем следующее.

Открываем файл вида формы который в моем слечае находится в файле: /components/com_jshopping/templates/мой_шаблон/product/review.php

И после открытия тега php вставляем код:

$code = rand(1000, 99999);
$_SESSION['code'] = $code;

Выглядит так:

Я конечно же в курсе что в joomla есть свой механизм для работы с сессиями, но для данной задачи обойдемся этим.

Далее в этот же файл вставляем следующий код в таблицу с полями:

<tr>
<td>Код: <span style="display:inline-block; background: white; border: 1px solid silver; color: silver; font-size:16px; font-weight:bolder; width:60px;text-align:center;"><?=$code?></span></td>
<td>
<input type="text" name="code" class="inputbox" />
</td>
</tr>

 Выглядит это примерно так (думаю наглядно вы поймете что куда вставлять и после чего, хотя в этом случае это не так важно, главное чтоб input был в теге form):

 

Далее необходимо в модель добавить код, для этого открываем файл: components/com_jshopping/tables/review.php ищем в нем функцию check() и добавляем в него код проверки кода с картинки.

После этого функция выглядит так:

function check(){
$db = JFactory::getDBO();
if (!$this->product_id){
return 0;
}
if ($this->user_name==''){
return 0;
}
if ($this->user_email==''){
return 0;
}
if ($this->review==''){
return 0;
}
if ($this->code!=$_SESSION['code']){
return 0;
}
$query = "SELECT product_id FROM #__jshopping_products WHERE product_id=".intval($this->product_id);
$db->setQuery($query);
$pid = intval($db->loadResult());
if (!$pid){
return 0;
}
return 1;
}

Думаю вы видите что мы добавили условие валидации, если отправленный код не равен сесси то выдаем ошибку.

Далее нам необходимо добавить пару строк в контроллер. Для этого открываем следующий файл:  /components/com_jshopping/controllers/product.php. В нем нас интересует функция reviewsave(). Чтоб не приводить весь код покажу на скрине какие строки и куда я добавил (отметил синим маркером):

Вот сообственно и все, если что пишите, помогу чем смогу.

Комментарии  

 
0 #3 Administrator 30.09.2015 10:16
Цитирую Zoich:
...Собственно, для проверки и пары часов хватило... Каптча все так же пропускает сообщения спамботов. Жаль, такое славное было решеньице.

В моем случае капча ничего не пропускает. Не стоит забывать про сервисы в которых люди рашифровывают капчу за денежку, а в данном случае капча передается обычной строкой которую можно скопировать. Следовательно не долго доработать при надобности бота под ваш сайт. Если вы хотите 100 процентной защиты то выводите число не строкой а изображением. В моем случае хватило и такой.
Цитировать
 
 
0 #2 Zoich 13.09.2015 00:54
...Собственно, для проверки и пары часов хватило... Каптча все так же пропускает сообщения спамботов. Жаль, такое славное было решеньице.
Цитировать
 
 
0 #1 Zoich 12.09.2015 23:06
Браво!!!!
Весь инет перерыла в поисках каптчи для отзывов джумшопинга. Находила пару платных расширений, но покупать принципиально ломало - из-за курса доллара в два раза переплачивать за русские расширения... Гм, бред!
Решила попробовать этот вариант. Описание - четкое, все заработало с первого раза. Через пару дней вернусь, сообщу, пролетает ли спам ))).
Спасибо за труд!
P.S. А если заменить каптчу под jcomments на такую же легкую? Ведь цифры вводить куда приятнее, чем ангельские буквы ;-)
Цитировать
 

Добавить комментарий


Защитный код
Обновить

Поиск

Голосование

Что Вы думаете на счет битрикса?
 

Все материалы раздела