目录 搜索
欢迎 目录 快速参考图 基本信息 服务器要求 许可协议 变更记录 关于CodeIgniter 安装 下载 CodeIgniter 安装指导 从老版本升级 疑难解答 介绍 开始 CodeIgniter 是什么? CodeIgniter 速记表 支持特性 应用程序流程图 模型-视图-控制器 架构目标 教程 内容提要 加载静态内容 创建新闻条目 读取新闻条目 结束语 常规主题 CodeIgniter URL 控制器 保留字 视图 模型 辅助函数 使用 CodeIgniter 类库 创建你自己的类库 使用 CodeIgniter 适配器 创建适配器 创建核心系统类 钩子 - 扩展框架的核心 自动装载资源 公共函数 URI 路由 错误处理 缓存 调试应用程序 以CLI方式运行 管理应用程序 处理多环境 PHP替代语法 安全 开发规范 类库参考 基准测试类 日历类 购物车类 配置类 Email 类 加密类 文件上传类 表单验证详解 FTP 类 图像处理类 输入类 Javascript 类 语言类 装载类 迁移类 输出类 分页类 模板解析器类 安全类 Session 类 HTML 表格类 引用通告类 排版类 单元测试类 URI 类 User-Agent 类 表单验证 XML-RPC 和 XML-RPC 服务器 Zip 编码类 缓存适配器 适配器参考 适配器 数据库类 Active Record 类 数据库缓存类 自定义函数调用 数据库配置 连接你的数据库 数据库快速入门例子代码 字段数据 数据库维护类 查询辅助函数 数据库类 查询 生成查询记录集 表数据 事务 数据库工具类 JavaScript类 辅助函数参考 数组辅助函数 CAPTCHA 辅助函数 Cookie Helper 日期辅助函数 目录辅助函数 下载辅助函数 Email 辅助函数 文件辅助函数 表单辅助函数 HTML辅助函数 Inflector 辅助函数 语言辅助函数 数字辅助函数 路径辅助函数 安全辅助函数 表情辅助函数 字符串辅助函数 文本辅助函数 排版辅助函数 URL 辅助函数 XML 辅助函数
文字

CodeIgniter 用户指南 版本 2.1.0

编辑文档、查看近期更改请 登录 或 注册  找回密码
查看原文

引用通告类

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

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

初始化类

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

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

加载完毕后,Trackback 对象就能够用: $this->trackback方式使用.

发送引用通告(Trackbacks)

引用通告可以从任何控制器函数中使用与示例相似的代码来发送:

$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 - 能够浏览到你站点上的博客日志的URL。
  • title - 你的博客日志的标题。
  • excerpt - 你的博客日志的内容。说明:引用通告类只会自动地发送日志内容的前500个字符。它还会去除所有的HTML。
  • blog_name - 你的博客的名称。
  • charset - 你的博客所使用的字符编码。如果省略,将会默认使用UTF-8。

根据发送的成功与否,引用通告发送函数将分别返回 TRUE/FALSE(布尔值)。如果发送失败,你可以通过下面的方式获取到错误信息:

$this->trackback->display_errors();

接收引用通告

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

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

你的 Ping URL

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

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

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

http://example.com/index.php/trackback/receive/entry_id

其中 entry_id 代表了你的每篇日志单独的ID号。

创建一个引用通告表

在接收引用通告之前你必须创建一个表来存储它们。 下面是表的基础原型:

引用通告规范只需要发送四部分信息(url,title,excerpt,blog_name)到引用通告,但是为了使数据更有用,我们在上面的数据表架构中添加了一些字段(日期、IP地址等等)。

处理一个引用通告

这里有一个关于如何接收和处理引用通告的范例。下面这些代码应该被用在你要接收引用通告的控制器函数里面。

$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')

其中 item 代表这四部分信息中的一部分: url, title, excerpt, 或者 blog_name。

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

$this->trackback->send_success();

注意: 上面的代码不包含数据验证,那正是我们鼓励你去添加的。

 

翻译贡献者: Drice, Hex, shnwqshnwq, yinzhili
最后修改: 2010-11-10 11:48:26
上一篇: 下一篇: