#1 2010-10-20 16:26

vitaly
Пользователь

Замена штатной каптчи на reCaptcha

Как заменить ставшую бесполезной штатную каптчу на reCaptcha?

Неактивен

 

#2 2010-10-26 08:39

Evgeniy
Пользователь

Re: Замена штатной каптчи на reCaptcha

+1

Неактивен

 

#3 2011-05-21 20:00

Pushkaref
Пользователь

Re: Замена штатной каптчи на reCaptcha

а воз и ныне там sad

Неактивен

 

#4 2011-05-22 09:06

toxx
Пользователь

Re: Замена штатной каптчи на reCaptcha

вы возьмите скиньтесь да закажите

Неактивен

 

#5 2011-05-22 10:48

Cklerick
Пользователь

Re: Замена штатной каптчи на reCaptcha

Поддерживаю вопрос. Стандартная капча никакая. Подскажите как менять может быть даже не на reCaptcha,но хотя бы на любую другую.

Неактивен

 

#6 2011-07-20 12:12

Zloy_Tip
Пользователь

Re: Замена штатной каптчи на reCaptcha

Прикрутил KCAPTCHA 2.0. Если интересно, помогу с установкой.

Неактивен

 

#7 2011-07-20 12:55

rat
Администратор

Re: Замена штатной каптчи на reCaptcha

Нелишним будет перед установкой проверить качество этой капчи здесь: http://anti-captcha.net/

Неактивен

 

#8 2011-08-03 07:27

Rusich
Пользователь

Re: Замена штатной каптчи на reCaptcha

Zloy_Tip написал:

Прикрутил KCAPTCHA 2.0. Если интересно, помогу с установкой.

Интересно, выложите для народа, народ поклонится и скажет спасибо.

Неактивен

 

#9 2011-08-04 09:13

gumanoid
Пользователь

Re: Замена штатной каптчи на reCaptcha

по просьбам трудящихся.

идем на recapcha.net
если у вас нет google-аккаунта, то регистрируетесь.
создаете ключи для своего домена.
вот отсюда
забираете php-библиотеку, распаковываете,файл recaptchalib.php копируете в published/SC/html/scripts

Не забываем делать копии редактируемых файлов!

далее редактируем published/SC/html/scripts/includes/product_discussion.php
в самом начале примерно 6-7 строчка, после

Код:

$Message = $Register->get(VAR_MESSAGE);
    /*@var $Message Message*/

вставляем этот кусок

Код:

include("recaptchalib.php");
    $publickey = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
    $privatekey="YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY";

где XXXX и YYYY - ключи сгенерированые рекапчей для вашего сайта

далее в этом же файле ниже примерно 27 строка
было так:

Код:

if(CONF_ENABLE_CONFIRMATION_CODE){
                        require_once(DIR_CLASSES.'/class.ivalidator.php');
                        $iVal = new IValidator();
                        if(!$iVal->checkCode($_POST['fConfirmationCode'])){

                                Message::raiseMessageRedirectSQ(MSG_ERROR, '#add-review', "err_wrong_ccode", '', array('topic_data' => $_POST));
                        }
                }

делаем так:

Код:

if(CONF_ENABLE_CONFIRMATION_CODE){    
    /*            
            require_once(DIR_CLASSES.'/class.ivalidator.php');
            $iVal = new IValidator();
            if(!$iVal->checkCode($_POST['fConfirmationCode'])){

                Message::raiseMessageRedirectSQ(MSG_ERROR, '#add-review', "err_wrong_ccode", '', array('topic_data' => $_POST));
            }
    */
            if ($_POST["recaptcha_response_field"]) {
            $resp = recaptcha_check_answer ($privatekey,
                                        $_SERVER["REMOTE_ADDR"],
                                        $_POST["recaptcha_challenge_field"],
                                        $_POST["recaptcha_response_field"]);

                if (!$resp->is_valid) {
                    Message::raiseMessageRedirectSQ(MSG_ERROR, '#add-review', "err_wrong_ccode", '', array('topic_data' => $_POST));
                }
            }

далее в этом же файле примерно 93 строка
было:

Код:

$smarty->assign('conf_image', URL_ROOT.'/imgval.php?'.generateRndCode(4).'=1');

делаем так:

Код:

//$smarty->assign('conf_image', URL_ROOT.'/imgval.php?'.generateRndCode(4).'=1');
    $smarty->assign('conf_image', recaptcha_get_html($publickey, $error));

теперь в файле published/SC/html/scripts/templates/frontend/product_discussion.html
почти в самом конце вместо:

Код:

{if $smarty.const.CONF_ENABLE_CONFIRMATION_CODE}
<tr>
    <td colspan="2">&nbsp;</td>
</tr>
<tbody class="background1">
<tr>
    <td colspan="2">{"str_enter_ccode"|translate}</td>
</tr>
<tr>
    <td align="right">
        <img src="{$conf_image}" alt="code" align="right" />
    </td>
    <td align="left">
        <input name="fConfirmationCode" type="text" >
    </td>
</tr>
</tbody>
{/if}

делаем:

Код:

{if $smarty.const.CONF_ENABLE_CONFIRMATION_CODE}
<tr>
    <td colspan="2">&nbsp;</td>
</tr>
<tbody class="background1">
<tr>
    <td colspan="2">{"str_enter_ccode"|translate}</td>
</tr>
<tr> 
        <td align="right">
<!--                 <img src="{$conf_image}" alt="code" align="right" />
        </td>
        <td align="left">
                <input name="fConfirmationCode" type="text" >  -->
        </td>
        <td>
            {$conf_image}
        </td>
</tr>
</tbody>
{/if}

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

будет примерно так:
http://en.zimagez.com/miniature/recapchaex.jpg

пы.сы.считаю что любая работа должна оплачиваться,поэтому просьба - "спасибы" слать на кошелек 41001748189913 (я.мани)

Неактивен

 

#10 2011-08-17 08:33

abrobuka
Пользователь

Re: Замена штатной каптчи на reCaptcha

Сделал по инструкции все, кеш очистил, все равно старая капча, где искать баг? Так же желательно вставить и на форму регистрации.

Неактивен

 

#11 2011-08-24 08:00

gumanoid
Пользователь

Re: Замена штатной каптчи на reCaptcha

это рекапча на странице отзывов, именно она обычно подвержена спаму сильнее всего.
если все сделали по инструкции, то 100% должно работать.
старая капча есть еще непосредственно на странице продукта в самом низу - там где "задать вопрос" - возможно перепутали и не там смотрите?

Неактивен

 

#12 2011-09-11 11:44

model66.ru
Пользователь

Re: Замена штатной каптчи на reCaptcha

gumanoid
Пользователь

я словесную капчу не думаете сделать?
типа пять плюс пять   =10

пять минус два  = 3

тк это самое действенное я на своем форуме на phpBB  поставил - и все спама нет, а на рекапче порой простые люди не могут зайти

Неактивен

 

#13 2011-11-30 18:47

Suliko
Пользователь

Re: Замена штатной каптчи на reCaptcha

gumanoid написал:

делаем так:

Код:

if(CONF_ENABLE_CONFIRMATION_CODE){    
    /*            
            require_once(DIR_CLASSES.'/class.ivalidator.php');
            $iVal = new IValidator();
            if(!$iVal->checkCode($_POST['fConfirmationCode'])){

                Message::raiseMessageRedirectSQ(MSG_ERROR, '#add-review', "err_wrong_ccode", '', array('topic_data' => $_POST));
            }
    */
            if ($_POST["recaptcha_response_field"]) {
            $resp = recaptcha_check_answer ($privatekey,
                                        $_SERVER["REMOTE_ADDR"],
                                        $_POST["recaptcha_challenge_field"],
                                        $_POST["recaptcha_response_field"]);

                if (!$resp->is_valid) {
                    Message::raiseMessageRedirectSQ(MSG_ERROR, '#add-review', "err_wrong_ccode", '', array('topic_data' => $_POST));
                }
            }

тут у Вас ошибочка, когда проходит проверка if ($_POST["recaptcha_response_field"]), то если $_POST["recaptcha_response_field"] false то не выдает никаких сообщений и комментарий спокойно добавляется, это будет в том случае если пользователь совсем не ввел ничего в поле капчи. Так что или совсем убрать эту проверку или добавить else в котором будет, например Message::raiseMessageRedirectSQ(MSG_ERROR, '#add-review', "err_wrong_ccode", '', array('topic_data' => $_POST));

Неактивен

 

#14 2011-12-13 13:18

swarowsky
Пользователь

Re: Замена штатной каптчи на reCaptcha

обновил версию шопскриипта, не получается чета поставить капчу гугловскую теперь. Пишет не то ввожу. Есть решение?

Отредактировано swarowsky (2011-12-13 15:50)

Неактивен

 

#15 2011-12-13 16:33

swarowsky
Пользователь

Re: Замена штатной каптчи на reCaptcha

С этим разобрался, а как сделать чтобы эта каптча отображалась непосредственно на странице с продуктом?

Или подскажите, где выполняется функция капчи для коментов на странице с продуктом

Отредактировано swarowsky (2011-12-13 19:12)

Неактивен

 

#16 2012-01-23 14:37

vman
Пользователь

Re: Замена штатной каптчи на reCaptcha

Спасибо gumanoid!

На самом деле код на замену в published/SC/html/scripts/includes/product_discussion.php вот такой если полностью:

Код:

        if(CONF_ENABLE_CONFIRMATION_CODE){    
    /*            
            require_once(DIR_CLASSES.'/class.ivalidator.php');
            $iVal = new IValidator();
            if(!$iVal->checkCode($_POST['fConfirmationCode'])){

                Message::raiseMessageRedirectSQ(MSG_ERROR, '#add-review', "err_wrong_ccode", '', array('topic_data' => $_POST));
            }
    */
            if ($_POST["recaptcha_response_field"]) {
            $resp = recaptcha_check_answer ($privatekey,
                                        $_SERVER["REMOTE_ADDR"],
                                        $_POST["recaptcha_challenge_field"],
                                        $_POST["recaptcha_response_field"]);

                if (!$resp->is_valid) {
                    Message::raiseMessageRedirectSQ(MSG_ERROR, '#add-review', "err_wrong_ccode", '', array('topic_data' => $_POST));
                }
            }
            else Message::raiseMessageRedirectSQ(MSG_ERROR, '#add-review', "err_wrong_ccode", '', array('topic_data' => $_POST));
        }

Далее чтобы капча появилась на странице продукции надо сделать почти тоже самое с файлами /published/SC/html/scripts/modules/products/scripts/product_detailed.php и /published/SC/html/scripts/templates/frontend/product_details_request.html

в файле product_detailed.php

Код:

                    if(CONF_ENABLE_CONFIRMATION_CODE){    
    /*            
                require_once(DIR_CLASSES.'/class.ivalidator.php');
                $iVal = new IValidator();
                if(!$iVal->checkCode($_POST['fConfirmationCode'])){
                
                    Message::raiseMessageRedirectSQ(MSG_ERROR, '#product-request', 'err_wrong_ccode', '', array('name' => 'prd_request', 'prd_request' => $_POST));
                }
    */
            if ($_POST["recaptcha_response_field"]) {
            $resp = recaptcha_check_answer ($privatekey,
                                        $_SERVER["REMOTE_ADDR"],
                                        $_POST["recaptcha_challenge_field"],
                                        $_POST["recaptcha_response_field"]);

                if (!$resp->is_valid) {
                    Message::raiseMessageRedirectSQ(MSG_ERROR, '#add-review', "err_wrong_ccode", '', array('topic_data' => $_POST));
                }
            }
            else Message::raiseMessageRedirectSQ(MSG_ERROR, '#add-review', "err_wrong_ccode", '', array('topic_data' => $_POST));
        }

в файле product_details_request.html

Код:

{if $smarty.const.CONF_ENABLE_CONFIRMATION_CODE}
<tr>
    <td colspan="2">&nbsp;</td>
</tr>
<tbody class="background1">
<tr>
    <td colspan="2">{"str_enter_ccode"|translate}</td>
</tr>
<tr> 
        <td align="right">
<!--                 <img src="{$conf_image}" alt="code" align="right" />
        </td>
        <td align="left">
                <input name="fConfirmationCode" type="text" >  -->
        </td>
        <td>
            {$conf_image}
        </td>
</tr>
</tbody>
{/if}

Неактивен

 

#17 2012-05-11 10:38

PORKI
Пользователь

Re: Замена штатной каптчи на reCaptcha

Подскажите можно как то уменьшить размер капчи ?

Неактивен

 

#18 2012-08-11 12:46

Allenka6333
Пользователь

Re: Замена штатной каптчи на reCaptcha

Ребят! Большое спасибо! Всё работает на УРА!!!cool

Неактивен

 

#19 2012-08-13 13:19

beauti65
Пользователь

Re: Замена штатной каптчи на reCaptcha

model66.ru написал:

gumanoid
Пользователь

я словесную капчу не думаете сделать?
типа пять плюс пять   =10

пять минус два  = 3

тк это самое действенное я на своем форуме на phpBB  поставил - и все спама нет, а на рекапче порой простые люди не могут зайти

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

Неактивен

 

#20 2012-12-06 18:21

polisha
Пользователь

Re: Замена штатной каптчи на reCaptcha

beauti65 написал:

model66.ru написал:

gumanoid
Пользователь

я словесную капчу не думаете сделать?
типа пять плюс пять   =10

пять минус два  = 3

тк это самое действенное я на своем форуме на phpBB  поставил - и все спама нет, а на рекапче порой простые люди не могут зайти

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

+1, мне тоже кажется что это было бы получше, слава богу считать людей научили.
Кто-то знает как ее сделать?

Неактивен

 

#21 2013-10-04 20:13

непойму
Пользователь

Re: Замена штатной каптчи на reCaptcha

Доброго времени суток всем!
Пользователь vman приводит код который нужно использовать для того чтобы капча появилась на странице продукта, но попробовал заменить также как в отзывах и не работает - ошибка. Кто знает какой код нужно заменить чтобы recapcha появилась в форме на странице продукта (Задать вопрос).
Спам прёт ужас.

vman написал:

Спасибо gumanoid!

На самом деле код на замену в published/SC/html/scripts/includes/product_discussion.php вот такой если полностью:

Код:

        if(CONF_ENABLE_CONFIRMATION_CODE){    
    /*            
            require_once(DIR_CLASSES.'/class.ivalidator.php');
            $iVal = new IValidator();
            if(!$iVal->checkCode($_POST['fConfirmationCode'])){

                Message::raiseMessageRedirectSQ(MSG_ERROR, '#add-review', "err_wrong_ccode", '', array('topic_data' => $_POST));
            }
    */
            if ($_POST["recaptcha_response_field"]) {
            $resp = recaptcha_check_answer ($privatekey,
                                        $_SERVER["REMOTE_ADDR"],
                                        $_POST["recaptcha_challenge_field"],
                                        $_POST["recaptcha_response_field"]);

                if (!$resp->is_valid) {
                    Message::raiseMessageRedirectSQ(MSG_ERROR, '#add-review', "err_wrong_ccode", '', array('topic_data' => $_POST));
                }
            }
            else Message::raiseMessageRedirectSQ(MSG_ERROR, '#add-review', "err_wrong_ccode", '', array('topic_data' => $_POST));
        }

Далее чтобы капча появилась на странице продукции надо сделать почти тоже самое с файлами /published/SC/html/scripts/modules/products/scripts/product_detailed.php и /published/SC/html/scripts/templates/frontend/product_details_request.html

в файле product_detailed.php

Код:

                    if(CONF_ENABLE_CONFIRMATION_CODE){    
    /*            
                require_once(DIR_CLASSES.'/class.ivalidator.php');
                $iVal = new IValidator();
                if(!$iVal->checkCode($_POST['fConfirmationCode'])){
                
                    Message::raiseMessageRedirectSQ(MSG_ERROR, '#product-request', 'err_wrong_ccode', '', array('name' => 'prd_request', 'prd_request' => $_POST));
                }
    */
            if ($_POST["recaptcha_response_field"]) {
            $resp = recaptcha_check_answer ($privatekey,
                                        $_SERVER["REMOTE_ADDR"],
                                        $_POST["recaptcha_challenge_field"],
                                        $_POST["recaptcha_response_field"]);

                if (!$resp->is_valid) {
                    Message::raiseMessageRedirectSQ(MSG_ERROR, '#add-review', "err_wrong_ccode", '', array('topic_data' => $_POST));
                }
            }
            else Message::raiseMessageRedirectSQ(MSG_ERROR, '#add-review', "err_wrong_ccode", '', array('topic_data' => $_POST));
        }

в файле product_details_request.html

Код:

{if $smarty.const.CONF_ENABLE_CONFIRMATION_CODE}
<tr>
    <td colspan="2">&nbsp;</td>
</tr>
<tbody class="background1">
<tr>
    <td colspan="2">{"str_enter_ccode"|translate}</td>
</tr>
<tr> 
        <td align="right">
<!--                 <img src="{$conf_image}" alt="code" align="right" />
        </td>
        <td align="left">
                <input name="fConfirmationCode" type="text" >  -->
        </td>
        <td>
            {$conf_image}
        </td>
</tr>
</tbody>
{/if}

Неактивен

 

#22 2013-10-05 14:45

непойму
Пользователь

Re: Замена штатной каптчи на reCaptcha

в файле /published/SC/html/scripts/modules/products/scripts/product_detailed.php
меняю этот код примерно 64 строка:

Код:

if(CONF_ENABLE_CONFIRMATION_CODE){    
                require_once(DIR_CLASSES.'/class.ivalidator.php');
                $iVal = new IValidator();
                if(!$iVal->checkCode($_POST['fConfirmationCode'])){
                
                    Message::raiseMessageRedirectSQ(MSG_ERROR, '#product-request', 'err_wrong_ccode', '', array('name' => 'prd_request', 'prd_request' => $_POST));
                }
            }

на этот код:

Код:

                    if(CONF_ENABLE_CONFIRMATION_CODE){    
    /*            
                require_once(DIR_CLASSES.'/class.ivalidator.php');
                $iVal = new IValidator();
                if(!$iVal->checkCode($_POST['fConfirmationCode'])){
                
                    Message::raiseMessageRedirectSQ(MSG_ERROR, '#product-request', 'err_wrong_ccode', '', array('name' => 'prd_request', 'prd_request' => $_POST));
                }
    */
            if ($_POST["recaptcha_response_field"]) {
            $resp = recaptcha_check_answer ($privatekey,
                                        $_SERVER["REMOTE_ADDR"],
                                        $_POST["recaptcha_challenge_field"],
                                        $_POST["recaptcha_response_field"]);

                if (!$resp->is_valid) {
                    Message::raiseMessageRedirectSQ(MSG_ERROR, '#add-review', "err_wrong_ccode", '', array('topic_data' => $_POST));
                }
            }
            else Message::raiseMessageRedirectSQ(MSG_ERROR, '#add-review', "err_wrong_ccode", '', array('topic_data' => $_POST));
        }

В файле /published/SC/html/scripts/templates/frontend/product_details_request.html меняю этот код, примерно 30 строка:

Код:

{if $smarty.const.CONF_ENABLE_CONFIRMATION_CODE}
        <br />
        <table cellpadding="6" cellspacing="0">
        <tr class="background1">
            <td colspan="2">{"str_enter_ccode"|translate}</td>
        </tr>
        {if $PAGE_VIEW eq 'mobile'}
        <tr class="background1">
            <td colspan="2" align="center">
                <img src="{$smarty.const.URL_ROOT}/imgval.php" alt="code" /><br />
            
                <input name="fConfirmationCode" value="" type="text" />
            </td>
        </tr>
        {else}
        <tr class="background1">
            <td align="right"><img src="{$smarty.const.URL_ROOT}/imgval.php" alt="code" align="right" /></td>
            <td>
                <input name="fConfirmationCode" value="" type="text" style="width:200px;" />
            </td>
        </tr>
        {/if}
        </table>
    {/if}

на этот код:

Код:

{if $smarty.const.CONF_ENABLE_CONFIRMATION_CODE}
<tr>
    <td colspan="2">&nbsp;</td>
</tr>
<tbody class="background1">
<tr>
    <td colspan="2">{"str_enter_ccode"|translate}</td>
</tr>
<tr> 
        <td align="right">
<!--                 <img src="{$conf_image}" alt="code" align="right" />
        </td>
        <td align="left">
                <input name="fConfirmationCode" type="text" >  -->
        </td>
        <td>
            {$conf_image}
        </td>
</tr>
</tbody>
{/if}

recapcha не работает (не появляется вообще). кнопка Ok оказывается вверху страницы.
Кто знает в чем ощибки, пожалуйста, помогите...

Неактивен

 

Board footer

Powered by PunBB