Класс Трекбека (Trackback)
Класс трекбека обеспечивает функции, которые позволяют отправлять и получать трекбек данные.
Если Вы не знакомы с Трекбеком, прочтите тут.
Использование класса трекбека
Инициализация класса
Как и большинство других классов в CodeIgniter, класс трекбека инициализируется в вашем контроллере с помощью $this->load->library() метода:
$this->load->library('trackback');
После загрузки библиотеки, объект трекбека будет доступен через:
$this->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' => 'The Title of My Entry',
'excerpt' => 'The entry content.',
'blog_name' => 'My Blog Name',
'charset' => 'utf-8'
);
if ( ! $this->trackback->send($tb_data))
{
echo $this->trackback->display_errors();
}
else
{
echo 'Trackback was sent!';
}
Описание массива данных:
- ping_url - URL сайта с которого отправляете трекбек. Вы можете отправить трекбеки на несколько адресов, разделяя каждый URL запятой.
- url - URL адрес сайта, где запись можно будет увидеть.
- title - Название записи.
- excerpt - Содержимое записи.
- blog_name - Название блога.
- charset - Кодировка в которой написана запись. Если опустить, UTF-8 будет назначена.
Примечание
Класс трекбека будет автоматически отправлять только первые 500 символов записи. Это будут удалены все HTML.
Метод отправки трекбека возвращает TRUE/FALSE (булев) при успехе или провале. В случае неудачи, вы можете получить сообщение об ошибке, используя:
$this->trackback->display_errors();
Получение требеков
Прежде чем вы можете получить требеки, вы должны создать блог. Если у вас нет блога, нет смысла продолжать изучать эту статью.
Получение требеков немного сложнее, чем отправлять их только потому, что вы будете нуждаться в таблице базы данных, в которых они хранятся, и нужно будет проверять входящие данные требека. Рекомендуется осуществлять тщательный процесс проверки для защиты от спама и дублирования данных. Вы можете также ограничить количество требеков для размещения с определенного IP в данный промежуток времени, чтобы избежать дальнейшего свертывания в спам. Процесс получения требеков довольно прост; проверка, занимает большую часть усилий.
Ваш пинг URL
Для того, чтобы принять требеки, вы должны указать URL адрес трекбека рядом с каждой из ваших записей в блог. Это будет URL адрес, который люди будут использовать для отправки вам требеков (мы будем ссылаться на это как на “Ваш пинг URL”).
Ваш пинг URL должен указывать на функцию, контроллер, где находится код приема вашего требека, и URL адресу должен быть указан идентификационный номер для каждой конкретной записи, так что, когда трекбек будет получен, вы сможете связать его с конкретной записью.
Например, если ваш класс контроллера вызывается Trackback, и принимающая функция называется receive, ваш пинг URL адреса будет выглядеть примерно так:
http://example.com/index.php/trackback/receive/entry_id
Где entry_id представляет отдельный ID для каждого из ваших записей.
Создание трекбек таблицы
Прежде чем вы сможете получить трекбеки, вы должны создать таблицу для их хранения. Вот пример такой таблицы:
CREATE TABLE trackbacks (
tb_id int(10) unsigned NOT NULL auto_increment,
entry_id int(10) unsigned NOT NULL default 0,
url varchar(200) NOT NULL,
title varchar(100) NOT NULL,
excerpt text NOT NULL,
blog_name varchar(100) NOT NULL,
tb_date int(10) NOT NULL,
ip_address varchar(45) NOT NULL,
PRIMARY KEY `tb_id` (`tb_id`),
KEY `entry_id` (`entry_id`)
);
Спецификация трекбека требует только четыре части информации, передаваемой в трекбек (url, title, excerpt, blog_name), но чтобы сделать данные более полезными, мы добавили еще несколько полей в таблице выше (date, IP address, и др.).
Обработка трекбека
Вот пример, показывающий, как вы будете принимать и обрабатывать трекбек. Следующий код предназначен для использования в функции контроллера, где вы планируете получать трекбеки.:
$this->load->library('trackback');
$this->load->database();
if ($this->uri->segment(3) == FALSE)
{
$this->trackback->send_error('Unable to determine the entry ID');
}
if ( ! $this->trackback->receive())
{
$this->trackback->send_error('The Trackback did not contain valid data');
}
$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 записи ожидается в третьем сегменте URL. Это основано на URI примере, который мы дали ранее:
http://example.com/index.php/trackback/receive/entry_id
Заметьте, entry_id в третьем сегмент URI, который можно получить, используя:
$this->uri->segment(3);
Наш код получения трекбека, если третий сегмент отсутствует, выдаст ошибку. Без ID записи, нет смысла продолжать.
Функция $this->trackback->receive() - просто функция проверки, которая смотрит на входящие данные и гарантирует, что они содержат четыре необходимых параметра (url, title, excerpt, blog_name). Возвращает TRUE при успехе FALSE при неудаче. Если терпит неудачу, будет отображено сообщение об ошибке.
Входящие данные трекбека можно получить с помощью этой функции:
$this->trackback->data('item')
Где пункт представляет собой один из этих четырех параметров: url, title, excerpt или blog_name
Если трекбек будет успешно принят, будет выдано сообщение об успешной передаче:
$this->trackback->send_success();
Примечание
Приведенный выше код не содержит проверку данных, ВЫ должны её добавить.
Справка класса
- class CI_Trackback
- $data = array('url' => '', 'title' => '', 'excerpt' => '', 'blog_name' => '', 'charset' => '')
Массив данных трекбека.
- $convert_ascii = TRUE
Следует ли преобразовать ASCII и MS Word символы в HTML.
- send($tb_data)
Параметры: - $tb_data (массив) – Данные трекбека
Возвращает: TRUE при успехе, FALSE при неудаче
Возвращаемый тип: булев
Отправляет трекбек.
- receive()
Возвращает: TRUE при успехе, FALSE при неудаче Возвращаемый тип: булев Этот метод просто проверяет входящие данные трекбека, возвращая TRUE при успехе, FALSE при неудаче. Если данные введены верно, то $this->data создает массива так, что он может быть вставлен в базу данных.
- send_error([$message = 'Incomplete information'])
Параметры: - $message (строка) – Сообщение об ошибке
Возвращаемый тип: пустота
Ответы на запросы трекбека с сообщением об ошибке.
Примечание
Этот метод прекращает выполнение скрипта.
- send_success()
Возвращаемый тип: пустота Ответы на запросы трекбека с сообщением об успехе.
Примечание
Этот метод прекращает выполнение скрипта.
- data($item)
Параметры: - $item (строка) – Ключ данных
Возвращает: Значение или пустую строку, если не найдено
Возвращаемый тип: строка
Возвращает из ответа один элемент массива данных.
- process($url, $data)
Параметры: - $url (строка) – Целевой URL адрес
- $data (строка) – Необработанные POST данные
Возвращает: TRUE при успехе, FALSE при неудаче
Возвращаемый тип: булев
Открывает сокетное соединение и передает данные на сервер, возвращая TRUE при успехе, FALSE при неудаче.
- extract_urls($urls)
Параметры: - $urls (строка) – Разделенный запятыми список URL адресов
Возвращает: Массив URL
Возвращаемый тип: массив
Этот метод позволяет отправить несколько трекбеков. Принимает строку из URL адреса (разделенную запятыми или пробелами) и ставит URL в массив.
- validate_url(&$url)
Параметры: - $url (строка) – URL трекбека
Возвращаемый тип: пустота
Просто добавляет http:// префикс, если его еще нет в URL.
- get_id($url)
Параметры: - $url (строка) – URL трекбека
Возвращает: URL ID или FALSE при неудаче
Возвращаемый тип: строка
Находит и возвращает ID URL трекбека или FALSE при неудаче.
- convert_xml($str)
Параметры: - $str (строка) – Входная строка
Возвращает: Преобразованную строку
Возвращаемый тип: строка
Преобразует защищеные XML символы в сущности.
- limit_characters($str[, $n = 500[, $end_char = '…']])
Параметры: - $str (строка) – Входная строка
- $n (число) – Максимальное количество символов
- $end_char (строка) – Символ для вставки в конец строки
Возвращает: Укороченная строка
Возвращаемый тип: строка
Ограничивает строку на основе количества символов. Сохранит полные слова.
- convert_ascii($str)
Параметры: - $str (строка) – Входная строкаg
Возвращает: Преобразованную строку
Возвращаемый тип: строка
Преобразует специальные символы текста ASCII и MS Word в HTML сущности.