ひとりごと

翌日:[2004-01-11]  前日:[2004-01-09] 表示単位 :

ついったー[おとなり日記] かがみさん Y.Kumagaiさん

2004/01/10 (土)

・ Movable Typeからのトラックバック

互換性が気になったので、Movable Type 2.65 (ports/MT)をちょっとインストールして実験してみました。日本語パッチに関しては ports に入っていないようでしたので、英語版での実験です。

で、実験結果。うちのトラックバック送受信部はMovable Type間でどちらからトラックバックpingを送っても動作するようです。日本語パッチを当てていないので表示が化け化けだったり、日本語を書いて編集しようとすると二度と判別できない文字になってたり(^^;)するのですが、まぁPOSTが通るかどうかの試験なので問題は無いでしょう。

ちなみに、いろんなウェブログシステムから自宅のスクリプトにポストしてみて、データの構造を調べてみました。この結果、

POSTデータの状態システム
仕様書通り & で区切ってあるMovable Type / livedoor / myprofile
& で区切ってあるWizBang standalone trackback form

ということが分かりました(Content-Type:には差異は見受けられません)。次に、&で区切った状態でPOSTしたトラックバックpingを受け取った場合にどういう挙動を示すかについて。

システム結果
Movable Type何も起こらない
LiveDoor登録される
MyProfile何も起こらない

ひとりごとこーなーは始めの実装でよかったのかもしれません(^^;)。しかし、なんでこうバラバラなんでしょうね。トラックバックって既に破綻しているのかな~?

[つっこみ]

・ つっこみとトラックバック

ぜんぜんわからない(^^;)ということなのでちょっと補足をば。

うちのページの[つっこみ/トラックバック]はトラックバックURLを探している人を誘導できるように単語を置いているだけで、じつはつっこみとトラックバックはぜんぜん関係なかったりします(汗)。個人的な使い分けを述べますと、つっこみ(またはコメント)というのは記事に関する感想とかさくっとつっこみなど、トラックバックはもと記事より内容のある記事を自分のページで作成するときなどに使うのかな~と思っています。考えようによれば、つっこみこーなーでアンカータグを書ければトラックバックは不要なんですが(汗)。

ということで、使用例。トラックバックpingは飛び先ページは記事のURLが分かれば送れますので、たとえばWizbang Standalone Trackback Formからこんな感じで送信すると、この記事に付いているトラックバックのようになります(←これは私が勝手に付けたものです)。ちなみに、自分の記事でこんなの書くのは面倒なので、うちのひとりごと入力画面ではこんなかんじでトラックバックURLを入れたら勝手にpingが送られるようにしています。

[つっこみ]

・ トラックバックpingでハマる

上のトラックバックpingを送るために外部の『よそにトラックバックpingを送れるcgi』を利用したのですが、ここから送るとうちのサイトでは受信できないのです(汗)。複数のサイトでダメだったので自分ところの受信処理がおかしいのだろうと調べだしたのですが、$_POST の中身を見てみると、本来 'url' とか 'blog_name' となっているべき変数名が 'amp;url' とか 'amp;blog_name' になってるんですねー。

むむむ、これはおかしい・・・ということで always_populate_raw_post_data = on にして $HTTP_RAW_POST_DATA を見てみますと、

&blog_name=%8DX%90V%97%9A%97%F0%82%C6%93%FA%8BL&title=%91S%91R ...
というふうになっていました。こちらで期待している・・・というか、たぶんPHPが処理したかった内容は
blog_name=%8DX%90V%97%9A%97%F0%82%C6%93%FA%8BL&title=%91S%91R ...
ですから、&記号で区切った後に amp;に続く文字列をそのまま変数名として処理したようです。そういえば XML ではこんなところもエンコードしなければいけなかったような・・・(←よく知らない^^;)。

てことで、この状態ではうちのトラックバックURLは多くのサイトが送信するトラックバックURLを受けられないと思われるので、応急措置として'amp;'始まる変数はこれを除去して扱うことにしました。PHPにもXML用の便利な関数とかがありそうなのですが、そんなの使って文字化けに悩むのもナニですし、そのうち何もしなくてもPHPで対応するような気もするので。←要するに手抜き

ちなみに、トラックバックを送るところは Free TrackBackというところもあるのですが、こちらを使うと url に'~hitorigoto/tb/1071' と入れているにもかかわらず '~hitorigoto/tb' にping が送られてしまって動きませんでした。むむむ、仕様書以外の仕様がいっぱいあるのかな~?

# livedoorとmyprofileから送ったトラックバックpingはなぜ正常に受信
# できたのだろう? これはXMLじゃないのかな?
# 試しに送信データを & から & に変えてみると、livedoor では
# 受信できるけどmyprofileでは受信できない。んむむむ
[つっこみ]

翌日:[2004-01-11]  前日:[2004-01-09] 表示単位 :
※このページへのリンクは自由です。リンクの方法については[つっこみ]で表示されるページの最後をごらんください。
たかたに(takatani@mars.dti.ne.jp)