Класс Trackback
Класс Trackback предоставляет функции для отправки и получения данных Trackback.
Если вы не знакомы с Trackback, вы найдете дополнительную информацию здесь.
Использование класса Trackback
Инициализация класса
Как и большинство других классов в CodeIgniter, класс Trackback инициализируется в вашем контроллере с помощью метода $this->load->library():
$this->load->library('trackback');
После загрузки объект библиотеки 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' => '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 сайта, которому вы отправляете Trackback. Вы можете отправить Trackback на несколько URL, разделив их запятыми.
- url - URL ВАШЕГО сайта, где можно увидеть запись блога.
- title - Заголовок вашей записи блога.
- excerpt - Содержание вашей записи блога.
- blog_name - Название вашего блога.
- charset - Кодировка символов, в которой написан ваш блог. Если опущен, будет использоваться UTF-8.
Примечание
Класс Trackback автоматически отправит только первые 500 символов вашей записи. Также он удалит весь HTML.
Метод отправки Trackback возвращает TRUE/FALSE (булево значение) в случае успеха или неудачи. Если произошла ошибка, вы можете получить сообщение об ошибке, используя:
$this->trackback->display_errors();
Получение Trackback
Прежде чем вы сможете получить Trackback, вы должны создать блог. Если у вас еще нет блога, нет смысла продолжать.
Получение Trackback немного сложнее, чем отправка, только потому, что вам понадобится таблица базы данных для их хранения, и вам нужно будет валидировать входящие данные Trackback. Рекомендуется реализовать тщательный процесс валидации для защиты от спама и дубликатов. Вы также можете ограничить количество Trackback, разрешенных с определенного IP в заданный промежуток времени, чтобы дополнительно ограничить спам. Процесс получения Trackback довольно прост; валидация занимает большую часть усилий.
Ваш URL Ping
Для приема Trackback вам необходимо отобразить URL Trackback рядом с каждой записью вашего блога. Это будет URL, который люди будут использовать для отправки вам Trackback (мы будем называть это вашим «URL Ping»).
Ваш URL Ping должен указывать на функцию контроллера, где находится ваш код для приема Trackback, и URL должен содержать номер ID для каждой конкретной записи, чтобы при получении Trackback вы могли связать его с конкретной записью.
Например, если ваш класс контроллера называется Trackback, а функция приема называется receive, ваши URL Ping будут выглядеть примерно так:
http://example.com/index.php/trackback/receive/entry_id
Где entry_id представляет собой индивидуальный номер ID для каждой вашей записи.
Создание таблицы Trackback
Прежде чем вы сможете получить Trackback, вы должны создать таблицу для их хранения. Вот базовый прототип такой таблицы:
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`)
);
Спецификация Trackback требует только четырех элементов информации для отправки в Trackback (url, title, excerpt, blog_name), но чтобы данные были более полезными, в схеме таблицы выше мы добавили несколько дополнительных полей (дата, IP-адрес и т. д.).
Обработка Trackback
Вот пример, показывающий, как вы будете получать и обрабатывать Trackback. Следующий код предназначен для использования внутри функции контроллера, где ожидается получение Trackback.
$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);
В нашем примере кода приема Trackback выше, если третий сегмент отсутствует, мы выведем ошибку. Без допустимого ID записи нет причины продолжать.
Функция $this->trackback->receive() — это просто функция валидации, которая проверяет входящие данные и убеждается, что они содержат четыре требуемых элемента данных (url, title, excerpt, blog_name). Она возвращает TRUE при успехе и FALSE при ошибке. Если произошла ошибка, вы выведите сообщение об ошибке.
Входящие данные Trackback можно получить с помощью этой функции:
$this->trackback->data('item')
Где item представляет собой один из этих четырех элементов информации: url, title, excerpt или blog_name.
Если данные Trackback успешно получены, вы выведете сообщение об успехе, используя:
$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 при ошибке
Тип возвращаемого значения: bool
Отправить обратную ссылку.
-
receive() -
Возвращает: TRUE при успехе, FALSE при ошибке Тип возвращаемого значения: bool Этот метод просто проверяет входящие данные обратной ссылки, возвращая TRUE при успехе и FALSE при ошибке. Если данные валидны, они устанавливаются в массив
$this->data, чтобы их можно было вставить в базу данных.
-
send_error([$message = 'Incomplete information']) -
Параметры: - $message (строка) – Сообщение об ошибке
Тип возвращаемого значения: void
Отвечает на запрос обратной ссылки с сообщением об ошибке.
Примечание
Этот метод завершит выполнение скрипта.
-
send_success() -
Тип возвращаемого значения: void Отвечает на запрос обратной ссылки с сообщением об успехе.
Примечание
Этот метод завершит выполнение скрипта.
-
data($item) -
Параметры: - $item (строка) – Ключ данных
Возвращает: Значение данных или пустая строка, если не найдено
Тип возвращаемого значения: строка
Возвращает один элемент из массива данных ответа.
-
process($url, $data) -
Параметры: - $url (строка) – Целевой URL
- $data (строка) – Необработанные данные POST
Возвращает: TRUE при успехе, FALSE при ошибке
Тип возвращаемого значения: bool
Открывает сокетное соединение и передает данные на сервер, возвращая TRUE при успехе и FALSE при ошибке.
-
extract_urls($urls) -
Параметры: - $urls (строка) – Список URL, разделенных запятыми
Возвращает: Массив URL
Тип возвращаемого значения: массив
Этот метод позволяет отправлять несколько обратных ссылок. Он принимает строку URL (разделенных запятой или пробелом) и помещает каждый URL в массив.
-
validate_url(&$url) -
Параметры: - $url (строка) – URL обратной ссылки
Тип возвращаемого значения: void
Просто добавляет префикс http://, если он еще не присутствует в URL.
-
get_id($url) -
Параметры: - $url (строка) – URL обратной ссылки
Возвращает: ID URL или FALSE при ошибке
Тип возвращаемого значения: строка
Находит и возвращает ID URL обратной ссылки или FALSE при ошибке.
-
convert_xml($str) -
Параметры: - $str (строка) – Входная строка
Возвращает: Преобразованная строка
Тип возвращаемого значения: строка
Преобразует зарезервированные XML-символы в сущности.
-
limit_characters($str[, $n = 500[, $end_char = '…']]) -
Параметры: - $str (строка) – Входная строка
- $n (целое) – Максимальное количество символов
- $end_char (строка) – Символ, который нужно поместить в конце строки
Возвращает: Укороченная строка
Тип возвращаемого значения: строка
Ограничивает строку на основе количества символов. Сохраняет целые слова.
-
convert_ascii($str) -
Параметры: - $str (строка) – Входная строка
Возвращает: Преобразованная строка
Тип возвращаемого значения: строка
Преобразует текст с высоким ASCII и специальные символы MS Word в HTML-сущности.
-
set_error($msg) -
Параметры: - $msg (строка) – Сообщение об ошибке
Тип возвращаемого значения: void
Устанавливает и записывает сообщение об ошибке.
-
display_errors([$open = '<p>'[, $close = '</p>']]) -
Параметры: - $open (строка) – Открывающий тег
- $close (строка) – Закрывающий тег
Возвращает: HTML-форматированные сообщения об ошибках
Тип возвращаемого значения: строка
Возвращает сообщения об ошибках в формате HTML или пустую строку, если ошибок нет.
-
© 2014–2020 British Columbia Institute of Technology
Licensed under the MIT License.
https://codeigniter.com/userguide3/libraries/trackback.html