国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
trackback的原理與實(shí)現(xiàn) trackback掃盲
trackback的原理與實(shí)現(xiàn) trackback掃盲
[ 2005-09-24 01:33 | 作者: coolsky ]
字體: | |
這是本人對(duì)Trackback的總結(jié),相信你看完本文一定會(huì)對(duì)Trackback有很明確的理解了!

[一]通俗的介紹
Trackback大部分人剛接觸到肯定會(huì)覺得很迷惑,不知道怎么用。其實(shí)它也沒有那么神秘,以下介紹一下我對(duì)Trackback的理解。
簡單說trackback是一個(gè)點(diǎn)對(duì)點(diǎn)通信和網(wǎng)站間互相通告的框架。這句話也講不明白.
那就拿實(shí)例來說:
A在他的博客A.com上寫了一篇文章 支持Trackback 引用地址為:http://a.com/trackback.php?id=1
B想寫一篇文章回復(fù)A,慣用方法是我在A文章的下面寫評(píng)論,但是Trackback帶來了新的革命:B可以把文章寫在自己的blog上,而同時(shí)又能在A的文章下面顯示B這篇文章的部分內(nèi)容。

這就是利用了Trackback,那么A想要看別人評(píng)論的全文就要到B的網(wǎng)站上去,這樣就帶來了網(wǎng)站之間的互通,這才是Blog的精髓。雖然在國內(nèi)大部分還習(xí)慣用comment的方式。
Trackback與comment不同的地方在于,你可以更好的控制自己的文章,按規(guī)定當(dāng)你在你網(wǎng)站修改文章的時(shí)候,A網(wǎng)站上的你的內(nèi)容同步改動(dòng).甚至刪除

[二]trackback的使用方法
也很簡單,一般A發(fā)表的文章下面會(huì)有類似這樣的引用地址:

引用通告地址:
GB2312 http://saysay.cn/trackback.php?id=86&encode=gb2312
UTF-8 http://saysay.cn/trackback.php?id=86&encode=utf-8

那么B在發(fā)表文章的時(shí)候有個(gè)地方填寫trackback地址的,如果我想引用gb2312的那么把http://saysay.cn/trackback.php?id=86&encode=gb2312這個(gè)地址拷貝填寫進(jìn)去,然后發(fā)表日志,那么A網(wǎng)站將會(huì)出現(xiàn)你日志的內(nèi)容。同樣當(dāng)你修改文章的時(shí)候,A網(wǎng)站上你的內(nèi)容也會(huì)隨著更改。

[三]更深入研究,程序之間互通方式
這個(gè)就是trackback的技術(shù)規(guī)范了 簡單的說就是發(fā)送的時(shí)候假造了一個(gè)POST方式的HTTP Request 其中含有title/excerpt/url/blog_name 除url以為均為可選 而Content-Type信息為application/x-www-form-URLencoded charset信息是以上四部分所使用的編碼. 最后形成類似這么一段HTTP請(qǐng)求發(fā)送出去:

POST /cblog2/trackback.php?id=181&encode=gb2312 HTTP/1.1
Host: 127.0.0.1
Connection: close
Content-Length: 165
Content-Type: application/x-www-form-urlencoded; charset=iso-8859-1
title=test%20trackback&url=http%3A%2F%2F127.0.0.1%2Fcblog2%2Findex.php%3Fid%3D183&excerpt=hello%2Cthis%20is%20a%

20trackback%20test%21&blog_name=Coolsky%27%27s%20Blog
[code]
注意發(fā)送的內(nèi)容必須經(jīng)過URL編碼后發(fā)送,否則中文就會(huì)顯示錯(cuò)誤
對(duì)方服務(wù)器收到請(qǐng)求后,將會(huì)發(fā)送一段XML格式的應(yīng)答 很簡單 沒錯(cuò)的話<error>字段是0 否則是1 并附帶一段<message>來說明錯(cuò)誤信

息. 類似這樣:
成功的應(yīng)答:
[code]
<?xml version="1.0″ encoding="utf-8″?>
<response>
<error>0</error>
</response>

失敗的應(yīng)答:

<?xml version="1.0″ encoding="utf-8″?>
<response>
<error>1</error>
<message>The error message</message>
</response>


同時(shí)發(fā)送成功的話,您發(fā)送的所有內(nèi)容將會(huì)被對(duì)方記入數(shù)據(jù)庫。如此就顯示在對(duì)方網(wǎng)站上了

[三]PHP中Trackback的具體實(shí)現(xiàn)
1.發(fā)送Trackback
當(dāng)你發(fā)表文章的時(shí)候填寫了trackback地址,提交以后,程序就會(huì)自動(dòng)發(fā)送一個(gè)構(gòu)造的POST方式的HTTP Request
筆者以本站程序?yàn)槔?
我定義一個(gè)發(fā)送程序:

function sendTrackback($host,$title,$url,$excerpt,$blog_name) {
$buf="";
$host = str_replace(‘http://‘, ‘‘, $host);
$path = explode(‘/‘, $host);
$host = $path[0];
unset($path[0]);
$path = ‘/‘ . implode(‘/‘, $path);
$excerpt = cn_substr($excerpt,252);
$fp = @fsockopen($host, 80, $errno, $errstr, 30);
if(!$fp) {
Return flase;
}
$blog_name=str_replace("‘", "‘‘", $blog_name);;
$query = ‘title=‘ . rawurlencode($title);
$query .= ‘&url=‘ . rawurlencode($url);
$query .= ‘&excerpt=‘ . rawurlencode($excerpt);
$query .= ‘&blog_name=‘ . rawurlencode($blog_name);

$out = ‘POST ‘ . $path . ‘ HTTP/1.1‘ . "\r\n";
$out .= ‘Host: ‘ . $host . "\r\n";
$out .= ‘Connection: close‘ . "\r\n";
$out .= ‘Content-Length: ‘ . strlen($query) . "\r\n";
$out .= ‘Content-Type: application/x-www-form-urlencoded; charset=iso-8859-1‘ . "\r\n\r\n";
$out .= $query . "\r\n";
fwrite($fp, $out);
while (!feof($fp))
$buf .= fgets($fp,128);
fclose($fp);
$arr=explode("<error>",$buf);
$return_num=intval(substr($arr[1], 1, 0));
if($return_num==0){
return true;
}else{
$arr2=explode("message",$buf);
$return_msg=str_replace(">", "", $arr2[1]);
$return_msg=str_replace("</", "", $return_msg);
admin_info("日志添加成功<br>Trackback 發(fā)送失敗,服務(wù)器返回信息:$return_msg","main.php?

do=blogManager");
}
}

函數(shù)介紹:
本函數(shù)通過trackback的規(guī)范規(guī)定的5個(gè)參數(shù),標(biāo)題,主機(jī),引用地址,我發(fā)表的內(nèi)容,我的站點(diǎn)名稱 函數(shù)首先通過字符串處理得到主機(jī)

ip或域名,然后通過fsockopen()函數(shù)打開socket連接,這個(gè)函數(shù)的使用方法類似fopen()打開連接成功后,把處理完的模擬POST表單的

HTTP REQUEST數(shù)據(jù)$out 發(fā)送給對(duì)方,通過fwrite()實(shí)現(xiàn)。
發(fā)送完后我們用fgets()函數(shù)獲得服務(wù)器返回值,然后存到$buf這個(gè)變量之中,然后對(duì)返回值進(jìn)行處理,如果返回含有

<error>0</error>則發(fā)送成功并接受成功,如果返回含有<error>1</error>則接受失敗,我們?nèi)〕龇?wù)器返回錯(cuò)誤信息

<message></message>之間的內(nèi)容,并輸出錯(cuò)誤提示。(其中admin_info()是我自定義的輸出錯(cuò)誤信息的函數(shù),你可以用簡單的echo輸

出錯(cuò)誤信息)

2.接收Trackback
我們用Trackback.php來實(shí)現(xiàn)接收。比發(fā)送更簡單。
因?yàn)槲覀兓赬ML通訊,所以首先在PHP文件開頭加上
header(‘Content-type: text/xml‘);
然后用一般處理表單提交的方法獲得POST過來的五個(gè)參數(shù)
然后將這5個(gè)參數(shù)存入數(shù)據(jù)庫,建立一個(gè)trackback表,包含五個(gè)參數(shù)的字段和自增ID就可以了,你還可以添加時(shí)間以記錄
如果存入成功,那么設(shè)置$error=0,如果失敗則設(shè)置$error=1;
并給出錯(cuò)誤信息$msg=‘引用出現(xiàn)錯(cuò)誤,可能數(shù)據(jù)庫存在問題!‘;
然后輸出頁面給發(fā)送方獲得

echo ‘<?xml version="1.0" encoding="gb2312"?>‘;
if($error) {
echo ‘<response><error>1</error><message>‘.$msg.‘</message></response>‘;
} else {
echo ‘<response><error>0</error></response>‘;
}

如此則完成Trackback全部發(fā)送接收過程!
ps:如果要判斷對(duì)方是修改文章,還是第一次提交trackback要求,只需要判斷自己的trackback表中是否已經(jīng)存在該url,如果不存在則

insert 一條數(shù)據(jù),如果已經(jīng)存在則update這條數(shù)據(jù)
如果想進(jìn)一步了解,可以參考本人的程序代碼!
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
讓Keso救你一命(多圖)
Google Base可用了
著名開源軟件網(wǎng)站地址
TrackBack 的簡單概念和實(shí)現(xiàn)架構(gòu)
Virtools 簡單了解,會(huì)用鍵盤控制攝像機(jī)了!! - Creative Madhous...
Dijkstra算法的完整實(shí)現(xiàn)版本之算法的源代碼
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服