CodeIgniter, руководство пользователя к версии 1.6.1


Класс Trackback

Класс Trackback позволяет использовать технологию трэкбэков в Ваших приложениях

Более подробно о технологии Trackback можно почитать здесь.

Инициализация Класса

Как и многие другие классы в CodeIgniter, класс Trackback инициализируется функцией $this->load->library:

$this->load->library('trackback');

После этого библиотека будет доступна по вызову $this->trackback

Отправка трэкбэка (trackback)

Trackback может быть отправлен с любого контроллера с использованием следующего кода:

$this->load->library('trackback');

$tb_data = array(
                'ping_url'  => 'http://example.com/trackback/456',
                'url'       => 'http://www.my-example.com/blog/entry/123',
                'title'     => 'Заголовок',
                'excerpt'   => 'Текст.',
                'blog_name' => 'Название блога',
                'charset'   => 'utf-8'
                );

if ( ! $this->trackback->send($tb_data))
{
     echo $this->trackback->display_errors();
}
else
{
     echo 'Trackback успешно отправлен!';
}

Описание параметров массива :

Функция возвращает значения TRUE/FALSE (boolean), если trackback отправлен/не отправлен. Вы можете посмотреть сообщение об ошибке следующим способом:

$this->trackback->display_errors();

Получение трэкбэков

Перед тем, как Вы сможете получать Trackback'и, следует создать блог/статьи, иначе получать трэкбэки не имеет смысла.

Система получения трэкбэков более сложная, чем отправки. Необходима база данных для хранения бэков. Каждый трэкбэк следует валидировать (проверить и подтвердить). Необходимо будет создать защиту от спама, например ограничить количество трэкбэков, создать спам-списки сайтов и IP-адресов и т. д. Сам процесс получения не так сложен, как процесс валидации.

Ваш Ping URL

Для получения Trackback'ов следует создать постоянный URL для каждой статьи, что бы другие люди могли посылать Вам трэкбэки по этому адресу ("Ping URL").

Следует создать контроллер обработки трэкбэков. В Ping URL должен передаваться идентификатор записи ( id )

Например, контроллер-обработчик назван Trackback, функция receive получает трэкбэк. Тогда Ваш Ping URLбудет выглядеть примерно так:

http://www.your-site.com/index.php/trackback/receive/entry_id

Где entry_id это идентификатор записи, которой предназначается трэкбэк.

Создание таблицы трэкбэков

Перед получением Trackback'ов следует создать место для их хранения. Рассмотрим это на примере таблицы trackbacks в бд MySQL:

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

Обработка трэкбэков

Этот пример показывает способ получения и обработки Trackback'ов.

$this->load->library('trackback');
$this->load->database();

if ($this->uri->segment(3) == FALSE)
{
    $this->trackback->send_error("Не указан ID записи ");
}

if ( ! $this->trackback->receive())
{
    $this->trackback->send_error("Trackback содержит некорректные данные!");
}

$data = array(
                'tb_id'      => '',
                'entry_id'   => $this->uri->segment(3),
                'url'        => $this->trackback->data('url'),
                'title'      => $this->trackback->data('title'),
                'excerpt'    => $this->trackback->data('excerpt'),
                'blog_name'  => $this->trackback->data('blog_name'),
                'tb_date'    => time(),
                'ip_address' => $this->input->ip_address()
                );

$sql = $this->db->insert_string('trackbacks', $data);
$this->db->query($sql);

$this->trackback->send_success();

Примечания:

ID записи должен быть 3 параметром в URL. Например:

http://www.your-site.com/index.php/trackback/receive/10

Получение 3 параметра осуществляется кодом :

$this->uri->segment(3);

Функция $this->trackback->receive() производит простую проверку на наличие обязательных данных (url, заголовок, имя блога). Она возвращает TRUE при успешной проверке или FALSE, если произошла ошибка (текст ошибки можно вывести ф-цией, расположенной в коде).

Также данные Trackback'а могут быть проверены с помощью функции:

$this->trackback->data('item')

Где item это один из обязательных параметров: url, title, excerpt, или blog_name

Если Trackback успешно получен, можно отправить об этом сообщение, использую функцию:

$this->trackback->send_success();

Важно: Приведенный выше пример не содежрит валидации (проверки) входящих данных на спам. Надеемся, Вы сами сможете разработать данную проверку.