乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      trackback的原理與實(shí)現(xiàn) trackback掃盲

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

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

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

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

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

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

      [三]更深入研究,程序之間互通方式
      這個(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請求發(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ā)送,否則中文就會顯示錯(cuò)誤
      對方服務(wù)器收到請求后,將會發(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)容將會被對方記入數(shù)據(jù)庫。如此就顯示在對方網(wǎng)站上了

      [三]PHP中Trackback的具體實(shí)現(xiàn)
      1.發(fā)送Trackback
      當(dāng)你發(fā)表文章的時(shí)候填寫了trackback地址,提交以后,程序就會自動發(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ā)送給對方,通過fwrite()實(shí)現(xiàn)。
      發(fā)送完后我們用fgets()函數(shù)獲得服務(wù)器返回值,然后存到$buf這個(gè)變量之中,然后對返回值進(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:如果要判斷對方是修改文章,還是第一次提交trackback要求,只需要判斷自己的trackback表中是否已經(jīng)存在該url,如果不存在則

      insert 一條數(shù)據(jù),如果已經(jīng)存在則update這條數(shù)據(jù)
      如果想進(jìn)一步了解,可以參考本人的程序代碼!

        本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多