rakutoネット
お問合せ 免責事項 Q&A 掲示板 サイト管理 リンク サイトマップ
HOME > PEARのトラックバック

PEARのトラックバック


トラックバックの実装

■トラックバック技術仕様書:Discreet Blog
■Services_Trackback:PEAR
■トラックバックってなに?:レントラ
■あなたのサイトを一斉送信!:PinGoo!

PEARが提供するトラックバックのサンプルを紹介します。
Services_Trackbackにはスパムチェック機能もついています。
現在(2006/06/06)スパムチェックに「Akismet DNSBL Regex SURBL Wordlist」の5つが用意されています。

私が確認したTrackback.php,v 1.18 2006/02/16 22:57:04のバージョンでは397行目
Services_Trackback::send($data = null)内の以下のコードに誤りを確認しました。
    $req->addHeader("User-Agent", $this->_options['useragent']);
 
    /* 第二引数に$optionsを指定します */
    $req->addHeader("User-Agent", $options['useragent']);

[サンプル]
●トラックバックPing
●トラックバックPingの一覧
●テスト用トラックバックURL
http://study.rakuto.net/sample/trackback/trackback.php

トラックバックPing

<?php
require_once 'Services/Trackback.php';
 
// Services_Trackbackオブジェクトの生成
$trackback = new Services_Trackback();
 
$title     = empty($_REQUEST['title'])?'タイトル':$_REQUEST['title'];
$url       = empty($_REQUEST['url'])?'http://rakuto.net/':$_REQUEST['url'];
$excerpt   = empty($_REQUEST['excerpt'])?'要約':$_REQUEST['excerpt'];
$blog_name = empty($_REQUEST['blog_name'])?'ブログ名':$_REQUEST['blog_name'];
$ping      = 'http://study.rakuto.net/sample/ServicesTrackback/trackback.php';
 
// 各送信トラックバック情報を設定
$trackback->set('title',         $title);
$trackback->set('url',           $url);
$trackback->set('excerpt',       $excerpt);
$trackback->set('blog_name',     $blog_name);
$trackback->set('trackback_url', $ping);
 
header('Content-Type: text/html; charset=UTF-8');
?>
<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>トラックバックピング</title>
  </head>
  <body>
<?php
    if (!empty($_REQUEST['send'])){
        $result = $trackback->send();
        if (PEAR::isError($result)) {
            echo $result->getMessage();
        }
    } //if (!empty($_REQUEST['send']))
?>
    <form name="ping" method="get" action="<?php echo $_SERVER['PHP_SELF'];?>">
      <label for="url">固定リンク</label>:
      <input id="url" type="text" name="url" value="" size="32"><br />
 
      <label for="title">タイトル</label>:
      <input id="title" type="text" name="title" value="" size="32"><br />
 
      <label for="blog_name">ブログ名</label>:
      <input id="blog_name" type="text" name="blog_name" value="" size="32">
      <br />
 
      <label for="excerpt">抜粋、要約</label>:
      <textarea id="excerpt" name="excerpt" cols="40" rows="4"></textarea>
      <br />
 
      <input type="submit" name="send" value="TB送信" /><br />
    </form>
  </body>
</html>

トラックバック受信

<?php
require_once 'Services/Trackback.php';
 
// トラックバック情報
$trackbackData = array(
    'id'        => 1,
    'host'      => $_SERVER['SERVER_ADDR'],
    'title'     => 'トラックバックテスト',
    'excerpt'   => 'rakutoネットです。',
    'url'       => 'http://rakuto.net/',
    'blog_name' => 'rakutoネットブログ',
    'trackback_url' => $_SERVER['PHP_SELF']
);
// Services_Trackbackオブジェクトの作成
$trackback = Services_Trackback::create($trackbackData);
 
// 送信されたトラックバック情報を受信
$result = $trackback->receive();
 
if (PEAR::isError($result)) {
    echo $trackback->getResponseError($result->getMessage(), 1);
} else {
    // 送信された各情報を取得する
    $values = array(
        'host'      => $trackback->get('host'),
        'title'     => $trackback->get('title'),
        'excerpt'   => $trackback->get('excerpt'),
        'url'       => $trackback->get('url'),
        'blog_name' => $trackback->get('blog_name'),
    );
    insert($values);
    echo $trackback->getResponseSuccess();
}
 
 
/**
 * データ操作設定・実行
 *
 * @access public
 * @param array $values
 * @return integer  データ操作結果
 */
function insert($values)
{
    foreach ($values as $key=> $value){
        $values[$key] = sqlite_escape_string($value);
    }
    $timestamp = date('Y-m-d H:i:s',time());
 
    $dbh = sqlite_open('tb.db', 0666);
 
    $sql = 
        'INSERT INTO '.
            'tb ('.
                'timestamp,'.
                'title,'.
                'excerpt,'.
                'url,'.
                'blog_name,'.
                'ip_address'.
            ') VALUES ('.
                "'".$timestamp."',".
                "'".$values['title']."',".
                "'".$values['excerpt']."',".
                "'".$values['url']."',".
                "'".$values['blog_name']."',".
                "'".$ip_address."'".
            ')';
 
    return sqlite_query($sql, $dbh);
}
?>


<<トラックバック
PHP Tips iMagickでGIFアニメ>>

PHPリング

@PHP.ring Home
<5 <1 Random List 1> 5>

rktSQLite

  • sourceforge.jp

広告


アマゾン検索

サーチ:
Amazon.co.jpアソシエイト

カテゴリ

  •  Templateエンジンのすすめ Templateエンジンのすすめ
  •  SQLiteをやってみよう SQLiteをやってみよう
  •  SQLite SQLコマンド一覧 SQLiteコマンド一覧
  •  SQLite 管理プログラムSQLite 管理
  •  はじめてのEclipse はじめてのEclipse
  •  PHP SQLiteのTIPS PHP SQLiteのTIPS
  •  サンプル サンプル/ダウンロード
  •  リンク リンク
  •  掲示板 掲示板

メニュー

  •  incoude pathを通す
  •  カレンダー
  •  排他処理
  •  PEAR DB
  •  画像アップロード
  •  プログレスバー
  •  PATH_INFOで拡張子を隠す
  •  トラックバック
  •  PEARのトラックバック
  •  iMagickでGIFアニメ
  •  メモリ上の画像をImageMagickする
  •  暗号化と復号化
  •  strtotime()でmonth処理

キーワード検索

キーワード



最近のTB

  •  2006/03/13さくらのブログに挑戦[rakutoネットブログ]
  •  2006/01/20レーザーチャートの作成方法[脳内研究所]

Summary

  •     ATOM(XML)
  •     RDF(XML)
  •     RSS0.92(XML)
  •     RSS2.0(XML)

Powered by

  •     PHP
  •     Smarty
  •     SQLite
  •     MySQL
Copyright (C) 2005 `rakuto.net' All Rights Reserved.