引用通告类

这个类提供了一组函数使你能够发送和接收引用通告的数据.

如果你对引用通告不太熟悉的话可以在这里查看更多的信息.

初始化类

和其它大多数类一样,Trackback 类 也是使用$this->load->library function:

  1. $this->load->library('trackback');
加载完毕后,Trackback 对象就能够用: _$this->trackback_方式使用. ## 发送引用通告(Trackbacks) 引用通告可以从任何控制器函数中使用与示例相似的代码来发送:
  1. $this->load->library('trackback');
  2. $tb_data = array(
  3. 'ping_url' => 'http://example.com/trackback/456',
  4. 'url' => 'http://www.my-example.com/blog/entry/123',
  5. 'title' => 'The Title of My Entry',
  6. 'excerpt' => 'The entry content.',
  7. 'blog_name' => 'My Blog Name',
  8. 'charset' => 'utf-8'
  9. );
  10. if ( ! $this->trackback->send($tb_data))
  11. {
  12. echo $this->trackback->display_errors();
  13. }
  14. else
  15. {
  16. echo 'Trackback was sent!';
  17. }
数组数据说明: - **ping_url** - 你想要发送引用通告的站点的URL。要把引用通告发送至多个URL,请将这些URL用逗号分隔开来。 - **url** - 能够浏览到你站点上的博客日志的URL。 - **title** - 你的博客日志的标题。 - **excerpt** - 你的博客日志的内容。说明:引用通告类只会自动地发送日志内容的前500个字符。它还会去除所有的HTML。 - **blog_name** - 你的博客的名称。 - **charset** - 你的博客所使用的字符编码。如果省略,将会默认使用UTF-8。 根据发送的成功与否,引用通告发送函数将分别返回 TRUE/FALSE(布尔值)。如果发送失败,你可以通过下面的方式获取到错误信息:
  1. $this->trackback->display_errors();

接收引用通告

在接收引用通告之前你必须得创建一个博客。如果你连博客都没有,那就没有必要继续下去了。

接收引用通告要比发送复杂一点,这仅仅是因为你将需要一个数据表来存储它们,而且你还得验证发送过来的引用通告数据。我们鼓励你去实现一个完整的验证过程,目的是防范垃圾信息和重复数据。你也许还想限制某个给定的时间范围内某个特定IP所能发送给你的引用通告数量,这样可以防范今后的垃圾邮件。接收引用通告的处理过程是很简单的;只不过验证过程占用了大部分的工作量。

你的 Ping URL

为了接受引用通告,你必须在每个博客日志旁边显示一个引用通告URL。这就是人们向你发送引用通告时用到的URL(我们把这个称为你的"Ping URL")。

你的Ping URL必须指向一个包含了引用通告接收代码的控制器,而且URL也必须包含每个特定的日志条目的ID,因此当你接收到引用通告的时候,你就能够将它与某篇日志关联起来。

例如,如果你的控制器类叫做 Trackback,接收函数叫做 receive,那么你的Ping URL看起来应该是这样的:

  1. http://example.com/index.php/trackback/receive/entry_id
其中 entry_id 代表了你的每篇日志单独的ID号。 ## 创建一个引用通告表 在接收引用通告之前你必须创建一个表来存储它们。 下面是表的基础原型:
  1. CREATE TABLE trackbacks (
  2. tb_id int(10) unsigned NOT NULL auto_increment,
  3. entry_id int(10) unsigned NOT NULL default 0,
  4. url varchar(200) NOT NULL,
  5. title varchar(100) NOT NULL,
  6. excerpt text NOT NULL,
  7. blog_name varchar(100) NOT NULL,
  8. tb_date int(10) NOT NULL,
  9. ip_address varchar(16) NOT NULL,
  10. PRIMARY KEY `tb_id` (`tb_id`),
  11. KEY `entry_id` (`entry_id`)
  12. );
引用通告规范只需要发送四部分信息(url,title,excerpt,blog_name)到引用通告,但是为了使数据更有用,我们在上面的数据表架构中添加了一些字段(日期、IP地址等等)。 ## 处理一个引用通告 这里有一个关于如何接收和处理引用通告的范例。下面这些代码应该被用在你要接收引用通告的控制器函数里面。
  1. $this->load->library('trackback');
  2. $this->load->database();
  3. if ($this->uri->segment(3) == FALSE)
  4. {
  5. $this->trackback->send_error("Unable to determine the entry ID");
  6. }
  7. if ( ! $this->trackback->receive())
  8. {
  9. $this->trackback->send_error("The Trackback did not contain valid data");
  10. }
  11. $data = array(
  12. 'tb_id' => '',
  13. 'entry_id' => $this->uri->segment(3),
  14. 'url' => $this->trackback->data('url'),
  15. 'title' => $this->trackback->data('title'),
  16. 'excerpt' => $this->trackback->data('excerpt'),
  17. 'blog_name' => $this->trackback->data('blog_name'),
  18. 'tb_date' => time(),
  19. 'ip_address' => $this->input->ip_address()
  20. );
  21. $sql = $this->db->insert_string('trackbacks', $data);
  22. $this->db->query($sql);
  23. $this->trackback->send_success();

说明:

条目ID号应该出现在你的URL的第三段中。这个的依据是我们之前给出的URI范例:

  1. http://example.com/index.php/trackback/receive/entry_id
注意 entry_id 位于URI的第三段,这样你就可以通过下面这种方式获取到它:

  1. $this->uri->segment(3);
在上面的引用通告接收代码中,如果缺少第三段,我们将发出错误警告。缺少有效的条目ID,也就没有理由继续下去了。

$this->trackback->receive() 函数只是一个简单的验证函数,作用是检查输入的数据以确保其中包含了必需的四部分数据(url, title, excerpt, blog_name)。如果成功则返回 TRUE,失败则返回 FALSE。如果失败,你将看到一条错误信息。

可以使用下面的函数获取输入的引用通告数据:

  1. $this->trackback->data('item')
其中 item 代表这四部分信息中的一部分: url, title, excerpt, 或者 blog_name。

如果引用通告数据被成功地接收,你将可以使用下面的方式获取到一条成功信息:

  1. $this->trackback->send_success();
注意: 上面的代码不包含数据验证,那正是我们鼓励你去添加的。

翻译贡献者:Drice, Hex, shnwqshnwq, yinzhili