互換性が気になったので、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を送れる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はなぜ正常に受信