Modx revo + quip, добавить captcha

Добрый вечер, друзья. Проблема у меня в том, что не могу понять, как подключить капчу в quip, но не reCaptcha, а какую-нибудь аналогичную(по проще типа введите 3х значное чилсло на картинке). Не могу догнать где, что в коде править. Укажите мне путь!

1 ответов


Навалял решение. Костыльное решение, но рабочее.core/components/quip/controllers/web/ThreadReply.php

  1. В качестве капчи использовал kcaptcha, убрал шум, и оставилтолько цифры, все настраивается через конфигурационный файл kcaptcha_config.php 
  2. Закинул капчу по адресу assets/components/kcaptcha/
  3. В файле index.php добавил поддержку API Modx для доступа к сессиям modx. Вот исправленное содержимое файла "**assets/components/kcaptcha/index.php**":
require_once "../../../core/model/modx/modx.class.php";
$modx= new modX();
$modx->initialize('web');
error_reporting (E_ALL);
include('kcaptcha.php');
session_start();
$captcha = new KCAPTCHA();
if($_REQUEST[session_name()]){
    $_SESSION<span style="color: rgb(51, 51, 51); font-family: Arial, Helvetica, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);">['captcha_keystring'] = $captcha->getKeyString();)</span>

4 Затем в файле **core/components/quip/controllers/web/ThreadReply.php** добавил следующий код в функцию handlePost()
<?php
$fields['kcaptcha'] = strip_tags($fields['kcaptcha']);
//... //... if (empty($fields['kcaptcha'])) $errors['kcaptcha'] = "Вы не ввели цифры на картинке";
else{
if (empty($_SESSION['captcha_keystring'])){
$errors['kcaptcha'] = "Переменной captcha_keystring нет".$_SESSION['captcha_keystring'];
 }
elseif ($fields['kcaptcha']!=$_SESSION['captcha_keystring']){
 $errors['kcaptcha'] = $fields['kcaptcha']."Вы не правильно ввели код на картинке".$_SESSION['captcha_keystring'].session_name().'='.session_id();
};
}?>

5 Ну и кусок капчи в шаблоне формы комментария выглядит так:
<div class="quip-fld kcaptcha">
        <label><span>Введите цифры на картинке</span></label>
        <span class="quip-error">[[+error.kcaptcha]]</span>
        <img class="kcaptcha_image" src="[[++assets_url]]components/kcaptcha/?[[!returnSession? &param=`ses_name`]]=[[!returnSession? &param=`ses_id`]]">
        <input type="text" name="kcaptcha" id="quip-comment-kcaptcha-[[+idprefix]]" value="[[+kcaptcha]]" class="kcaptcha_field"/>
        <br />
    </div>

Может кому поможет, вот скрин :