引用通告類
這個(gè)類提供了一組函數(shù)使你能夠發(fā)送和接收引用通告的數(shù)據(jù).
如果你對(duì)引用通告不太熟悉的話可以在這里查看更多的信息.
初始化類
和其它大多數(shù)類一樣,Trackback 類 也是使用$this->load->library function:
$this->load->library('trackback');
加載完畢后,Trackback 對(duì)象就能夠用: $this->trackback方式使用.
發(fā)送引用通告(Trackbacks)
引用通告可以從任何控制器函數(shù)中使用與示例相似的代碼來發(fā)送:
$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!';
}
數(shù)組數(shù)據(jù)說明:
- ping_url - 你想要發(fā)送引用通告的站點(diǎn)的URL。要把引用通告發(fā)送至多個(gè)URL,請(qǐng)將這些URL用逗號(hào)分隔開來。
- url - 能夠?yàn)g覽到你站點(diǎn)上的博客日志的URL。
- title - 你的博客日志的標(biāo)題。
- excerpt - 你的博客日志的內(nèi)容。說明:引用通告類只會(huì)自動(dòng)地發(fā)送日志內(nèi)容的前500個(gè)字符。它還會(huì)去除所有的HTML。
- blog_name - 你的博客的名稱。
- charset - 你的博客所使用的字符編碼。如果省略,將會(huì)默認(rèn)使用UTF-8。
根據(jù)發(fā)送的成功與否,引用通告發(fā)送函數(shù)將分別返回 TRUE/FALSE(布爾值)。如果發(fā)送失敗,你可以通過下面的方式獲取到錯(cuò)誤信息:
$this->trackback->display_errors();
接收引用通告
在接收引用通告之前你必須得創(chuàng)建一個(gè)博客。如果你連博客都沒有,那就沒有必要繼續(xù)下去了。
接收引用通告要比發(fā)送復(fù)雜一點(diǎn),這僅僅是因?yàn)槟銓⑿枰粋€(gè)數(shù)據(jù)表來存儲(chǔ)它們,而且你還得驗(yàn)證發(fā)送過來的引用通告數(shù)據(jù)。我們鼓勵(lì)你去實(shí)現(xiàn)一個(gè)完整的驗(yàn)證過程,目的是防范垃圾信息和重復(fù)數(shù)據(jù)。你也許還想限制某個(gè)給定的時(shí)間范圍內(nèi)某個(gè)特定IP所能發(fā)送給你的引用通告數(shù)量,這樣可以防范今后的垃圾郵件。接收引用通告的處理過程是很簡(jiǎn)單的;只不過驗(yàn)證過程占用了大部分的工作量。
你的 Ping URL
為了接受引用通告,你必須在每個(gè)博客日志旁邊顯示一個(gè)引用通告URL。這就是人們向你發(fā)送引用通告時(shí)用到的URL(我們把這個(gè)稱為你的"Ping URL")。
你的Ping URL必須指向一個(gè)包含了引用通告接收代碼的控制器,而且URL也必須包含每個(gè)特定的日志條目的ID,因此當(dāng)你接收到引用通告的時(shí)候,你就能夠?qū)⑺c某篇日志關(guān)聯(lián)起來。
例如,如果你的控制器類叫做 Trackback,接收函數(shù)叫做 receive,那么你的Ping URL看起來應(yīng)該是這樣的:
http://example.com/index.php/trackback/receive/entry_id
其中 entry_id 代表了你的每篇日志單獨(dú)的ID號(hào)。
創(chuàng)建一個(gè)引用通告表
在接收引用通告之前你必須創(chuàng)建一個(gè)表來存儲(chǔ)它們。 下面是表的基礎(chǔ)原型:
引用通告規(guī)范只需要發(fā)送四部分信息(url,title,excerpt,blog_name)到引用通告,但是為了使數(shù)據(jù)更有用,我們?cè)谏厦娴臄?shù)據(jù)表架構(gòu)中添加了一些字段(日期、IP地址等等)。
處理一個(gè)引用通告
這里有一個(gè)關(guān)于如何接收和處理引用通告的范例。下面這些代碼應(yīng)該被用在你要接收引用通告的控制器函數(shù)里面。
$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號(hào)應(yīng)該出現(xiàn)在你的URL的第三段中。這個(gè)的依據(jù)是我們之前給出的URI范例:
http://example.com/index.php/trackback/receive/entry_id
注意 entry_id 位于URI的第三段,這樣你就可以通過下面這種方式獲取到它:
$this->uri->segment(3);
在上面的引用通告接收代碼中,如果缺少第三段,我們將發(fā)出錯(cuò)誤警告。缺少有效的條目ID,也就沒有理由繼續(xù)下去了。
$this->trackback->receive() 函數(shù)只是一個(gè)簡(jiǎn)單的驗(yàn)證函數(shù),作用是檢查輸入的數(shù)據(jù)以確保其中包含了必需的四部分?jǐn)?shù)據(jù)(url, title, excerpt, blog_name)。如果成功則返回 TRUE,失敗則返回 FALSE。如果失敗,你將看到一條錯(cuò)誤信息。
可以使用下面的函數(shù)獲取輸入的引用通告數(shù)據(jù):
$this->trackback->data('item')
其中 item 代表這四部分信息中的一部分: url, title, excerpt, 或者 blog_name。
如果引用通告數(shù)據(jù)被成功地接收,你將可以使用下面的方式獲取到一條成功信息:
$this->trackback->send_success();
注意: 上面的代碼不包含數(shù)據(jù)驗(yàn)證,那正是我們鼓勵(lì)你去添加的。
?