Перейти к содержимому


Фотография
- - - - -

KeyCAPTCHA в комментарии и корзину

капча keycapcha интеграция капчи

Сообщений в теме: 3

#1 feedmy.name

feedmy.name

Отправлено 02 April 2014 - 22:00

Здравствуйте!

 

Вопрос в следующем.

 

Нужно интегрировать капчу "keycapcha" в стандартных она, не появляется! да и ненужно!

 

нужно в комментарии Jbzoo! все прекрастно пойму, если вопрос не к Вам. Но надеюсь на помощь (fingers)

 

нашел только вот эту тему, а дальше (blush)  тему

 

Спс.

 

В PHP как танцор в сантехнике :)

 

вот что написал суппорт кейкапчи:

Дело втом, что наш плагин использует свою собственную интеграцию, для того,
чтоб работать на тех компонентах, которые не поддерживают Joomla captcha system

 

Инструкция для ручной интеграции

File index.php for showing and proceeding form pretected by CAPTCHA:

<form method="POST" action="">
    <input name="form_field"/>
    <?php
    if (!class_exists('KeyCAPTCHA_CLASS')) {
        // Replace /path_to_keycaptcha_file/ with real path to keycaptcha.php file
        include('/path_to_keycaptcha_file/keycaptcha.php');
    }
    $kc_o = new KeyCAPTCHA_CLASS();
    echo $kc_o->render_js();
    ?>  
    <input type="hidden" name="capcode" id="capcode" value="false" />
    <input type="submit" value="Save" id="postbut" class="button" />
</form> 
<?php
    if (isset($_POST['form_field'])){
        if (!class_exists('KeyCAPTCHA_CLASS')) {
            // Replace /path_to_keycaptcha_file/ with real path to keycaptcha.php file
            include('/path_to_keycaptcha_file/keycaptcha.php');
        }
        $kc_o = new KeyCAPTCHA_CLASS();
        if ($kc_o->check_result($_POST['capcode'])) {
            // A visitor solved CAPTCHA task correctly
            // Add your code that will save the data of your form
        }
        else {
            // A visitor solved CAPTCHA task incorrectly
            // Add your code that will generate an error message
        }
    }
?> 

Create file keycaptcha.php with CAPTCHA API implementation:

<?php
if ( !class_exists('KeyCAPTCHA_CLASS') ){
    class KeyCAPTCHA_CLASS  {
        // Replace PRIVATE_KEY_HERE and USER_ID_HERE
        // with proper values from your keycaptcha.com account
        private $p_kc_private_key = 'PRIVATE_KEY_HERE';
        private $p_kc_user_id = 'USER_ID_HERE';
        private $c_kc_keyword = 'accept';
        private $p_kc_visitor_ip = '';
        private $p_kc_session_id = '';
        private $p_kc_web_server_sign = '';
        private $p_kc_web_server_sign2 = '';        
        private $p_kc_js_code = '';

        public function get_web_server_sign($use_visitor_ip = 0){
            return md5($this->p_kc_session_id . 
                (($use_visitor_ip) ? ($this->p_kc_visitor_ip) :("")) . 
                $this->p_kc_private_key);
        }

        function __construct($a_private_key='', $a_js_code=''){
            if ( $a_private_key != '' ) {
                $this->p_kc_private_key = $a_private_key;
            }
            if ( $a_js_code != '' ) {
                $this->p_kc_js_code = $a_js_code;
            } else {
                $this->p_kc_js_code = "<!-- KeyCAPTCHA code (www.keycaptcha.com) -->
                <script type='text/javascript'>
                    var s_s_c_user_id = '$this->p_kc_user_id';
                    var s_s_c_session_id = '#KC_SESSION_ID#';
                    var s_s_c_captcha_field_id = 'capcode';
                    var s_s_c_submit_button_id = 'postbut';
                    var s_s_c_web_server_sign = '#KC_WSIGN#';
                    var s_s_c_web_server_sign2 = '#KC_WSIGN2#';
                </script>
                <script language=JavaScript src='http://backs.keycaptcha.com/swfs/cap.js'>
                </script>
                <!-- end of KeyCAPTCHA code -->";
            }
            $this->p_kc_session_id = uniqid() . '-4.0.0.001';
            $this->p_kc_visitor_ip = $_SERVER["REMOTE_ADDR"];
        }

        function http_get($path){
            $arr = parse_url($path);
            $host = $arr['host'];
            $page = $arr['path'];
            if ( $page=='' ) {
                $page='/';
            }
            if ( isset( $arr['query'] ) ) {
                $page.='?'.$arr['query'];
            }
            $errno = 0;
            $errstr = '';
            $fp = fsockopen ($host, 80, $errno, $errstr, 30);
            if (!$fp){ return ""; }
            $request = "GET $page HTTP/1.0\r\n";
            $request .= "Host: $host\r\n";
            $request .= "Connection: close\r\n";
            $request .= "Cache-Control: no-store, no-cache\r\n";
            $request .= "Pragma: no-cache\r\n";
            $request .= "User-Agent: KeyCAPTCHA\r\n";
            $request .= "\r\n";

            fwrite ($fp,$request);
            $out = '';

            while (!feof($fp)) $out .= fgets($fp, 250);
            fclose($fp);
            $ov = explode("close\r\n\r\n", $out);

            return $ov[1];
        }

        public function check_result($response){
            $kc_vars = explode("|", $response);
            if ( count( $kc_vars ) < 4 ){
                return false;
            }
            if ($kc_vars[0] == md5(
                        $this->c_kc_keyword . 
                        $kc_vars[1] .
                        $this->p_kc_private_key . 
                        $kc_vars[2])){
                if (stripos($kc_vars[2], "http://") !== 0){
                    $kc_current_time = time();
                    $kc_var_time = preg_split('/\/| |:/', $kc_vars[2]);
                    $kc_submit_time = gmmktime($kc_var_time[3],
                                        $kc_var_time[4], 
                                        $kc_var_time[5], 
                                        $kc_var_time[1], 
                                        $kc_var_time[2], 
                                        $kc_var_time[0]);
                    if (($kc_current_time - $kc_submit_time) < 15){
                        return true;
                    }
                }
                else{
                    if ($this->http_get($kc_vars[2]) == "1"){
                        return true;
                    }
                }
            }
            return false;
        }

        public function render_js (){
            if ( isset($_SERVER['HTTPS']) && ( $_SERVER['HTTPS'] == 'on' ) ){
                $this->p_kc_js_code = str_replace ("http://","https://", $this->p_kc_js_code);
            }
            $this->p_kc_js_code = str_replace ("#KC_SESSION_ID#", 
                                            $this->p_kc_session_id, $this->p_kc_js_code);
            $this->p_kc_js_code = str_replace ("#KC_WSIGN#", 
                                            $this->get_web_server_sign(1), $this->p_kc_js_code);
            $this->p_kc_js_code = str_replace ("#KC_WSIGN2#", 
                                            $this->get_web_server_sign(), $this->p_kc_js_code);
            return $this->p_kc_js_code;
        }
    }
}
?>

Сами плагины находятся по адресу https://www.keycaptc...aptcha-for-cms/ в моем случаи это Joomla 2.5

 

Это все. также есть другие варианты на других языках программирования https://www.keycaptc...om/captcha-api/

 

 

что еще необходимо для успешной интеграции? если сайт и доступ пишите. завтра предоставлю доступ суппорту кейкапчи! как бы больше к ним вопрос. хотелось бы услышать идеи нашего суппорта (nerd)


Сообщение отредактировал feedmy.name: 03 April 2014 - 00:14

  • 0

you call my joomla wonderfull but yet i called simple : )


#2 feedmy.name

feedmy.name

Отправлено 03 April 2014 - 02:45

ребята вообщем так!

 

после многочисленного серфа по сети, меня пару постов и видеороликов навело на мысль. ???

 

вопрос решил! следующим способом! решил проверить архивы с "keycapcha" на "битые банки! там разные версии 1.5, 2.5, 3.0, вот что выяснил методом тыка! и просмотром баз данных и переберанием кода.

 

архив с версией 2.5 который генерируется в бек-энде в личном кабинете капчи, не "есть съедобный" то есть он, автоматически не интегрируется в джумлу как стандартный плагин капчи! невозможно выбрать капчу по умолчанию!

 

после скачивания с репозитория http://extensions.jo...y/captcha/18364 и установки плагина для версии джумлы 3.0  (на версию 2.5.19)+ включения плагина в настройках увидел следующее

 

плагин "преГрастдо" интегрировался и работает! как в коментариях так и при регистрации! подумал о минусах... дело в том что в версии плагина для 2.5 были настройки интеграции капчи в к2, регистрацию и прочую "дрибедень"! тут же после просмотра *.xml плагина и базы данных, а именно "ваш_префикс_extensions"-"System - KeyCAPTCHA"  выяснилось что в версии 3.0 все параметры отсутствуют, в версии 2.5 они были включены по умолчанию "YES" (и по дефолту в *keycaptcha.xml были "YES") значит в установленой версии 3.0 разработчик также установил значения на "YES", у меня как бы в модуле "регистрация" работает - это тому подтверждение ИМХО.

 

ЗЫ осталось решить интеграцию во всплывающем окне но это уже не к нашему суппорту :) буду перепись вести с Андреем с супорта капчи :) обезательно поделюсь с позитивным результатом!

 

ЗЫЫ прошу, если кому нибудь указал верный путь, и труды мои "танцора-сантехника в PHP" в написании данного топика помогли найти решение для приятной защиты ваших сайтов, нашего продукта JbZoo от спам ботов, если вы решите попробовать данную капчу не скупитесь перейти на нее по ссылки ниже!  (fingers)минусов вы не получите одни только ПЛЮСЫ! да и я с Вами!

 

ваша реферальная ссылка: http://www.keycaptcha.ru/?refid=79975

 

Спс Всем за внимание и понимание, а также хочу поблагодарить народную раздел науки "методом тыка" 1237585332709.jpg


Сообщение отредактировал feedmy.name: 03 April 2014 - 02:48

  • 2

you call my joomla wonderfull but yet i called simple : )


#3 SmetDenis

SmetDenis

Отправлено 03 April 2014 - 23:41

Нашел ваш пост полезным для других, за сим перенес его в раздел рецептом.


  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#4 feedmy.name

feedmy.name

Отправлено 04 April 2014 - 01:44

ок! напишу следующее что, переписка с суппортом ещу идет, полным ходом!


  • 0

you call my joomla wonderfull but yet i called simple : )





Click to return to top of page in style!