Как защитить osTicket от спамботов

 

  1. Скачайте CleanTalk API с Github.com

  2. Распакуйте скачанный архив в корневую папку с osTicket. Вы увидите папку с названием "php-antispam-master". Переименуйте её в "cleantalk"

  3. Отредактируйте скрипт "open.php" в корневой папке с osTicket

 

Для начала, вам необходио подключить CleanTalk API к вашему сайту. Вы можете вставить этот код в самое начало вашего скрипта:

 

session_start(); //Создание сессии require_once (dirname(__FILE__) . '/cleantalk/cleantalk.class.php');

 

Замените следующий код:

 

if(($ticket=Ticket::create($vars, $errors, SOURCE))){

    $msg=__('Support ticket request created');

// Drop session-backed form data

    unset($_SESSION[':form-data']);

//Logged in...simply view the newly created ticket.

    if($thisclient && $thisclient->isValid()) {

        session_write_close();

        session_regenerate_id();

        @header('Location: tickets.php?id='.$ticket->getId());

    }

}

else {

    $errors['err']=$errors['err']?$errors['err']:__('Unable to create a ticket. Please correct errors below and try again!');

}

 

На этот:

 

$uform = UserForm::getUserForm()->getForm($_POST);

$config_url = 'http://moderate.cleantalk.org'; //Адрес сервера

$auth_key = '000000000'; // Ваш ключ доступа

$ct_request = new CleantalkRequest();

$ct_request->auth_key = $auth_key; //Переменная с ключом доступа

$ct_request->message = $tform->getField('message'); //Сообщение для проверки

$ct_request->method_name = 'check_message'; //Метод для проверки сообщения 

$ct_request->sender_email = $uform->getClean()['email']; //E-mail адрес для проверки

$ct_request->sender_nickname = $uform->getClean()['name']; //Имя для проверки 

$ct_request->agent = 'php-api'; //Имя расширения. Оставьте без изменений.

$ct_request->sender_ip = $_SERVER["REMOTE_ADDR"]; //IP-адрес для проверки 

$ct = new Cleantalk();

$ct->server_url = $config_url;

$ct_result = $ct->isAllowMessage($ct_request);

if ($ct_result->allow == 1) {

    if(($ticket=Ticket::create($vars, $errors, SOURCE))){

        $msg=__('Support ticket request created');

// Drop session-backed form data

        unset($_SESSION[':form-data']);

//Logged in...simply view the newly created ticket.

        if($thisclient && $thisclient->isValid()) {

            session_write_close();

            session_regenerate_id();

            @header('Location: tickets.php?id='.$ticket->getId());

        }

    }

    else{

        $errors['err']=$errors['err']?$errors['err']:__('Unable to create a ticket. Please correct errors below and try again!');

    }

}

else {

    echo 'Comment blocked. Reason ' . $ct_result->comment;

}

 

Следующая строку можно заменить на ваше собственное сообщение о блокировке:

 

echo 'Comment blocked. Reason ' . $ct_result->comment;

 

Например:

 

@header('Location: blocked.php');

 

Создайте тикет, используя почту из черного списка s@cleantalk.org. В результате Вы увидите сообщение о блокировке в самом верху страницы.

 

 


Возможно, будет так же интересно