永続的URL対応が簡単にできてしまったもので、気をよくして、ついでというか、トラックバックの受信も可能なようにしてみました。ただ、これ、実験ではうまくいっているようなのですが、自分のところに実装しているわけではないので、もしかしたらバグがあるかもしれません。また、永続的URL対応と異なり、変更量が多く、内容も中級者以上向けだと思われることから、あえて改造コードの掲載は行いません。なので「参考」の文字がついています。
まず、事前の準備。
WebForumでは適切な文字コードへの変換のためにjcode.plという外部スクリプトを呼び出しています。これはWebForumの配布パッケージに同梱されています。
しかし、トラックバックを受信するためには、これだけでは足りません。トラックバックはUTF-8という文字コードで飛んでくることが多いのですが、jcode.plはこのコードに対応しておりません。解決策はいろいろとあるのですが、私はsimaguni.plという外部スクリプトを導入しました。環境によっては、もっとよい方法もあります。たとえば、perlの新しいバージョンでは処理系自体にUTF-8を処理する関数がついています。
次に、トラックバックを受信するためには、そのためのURLを用意する必要があります。これをトラックバック Ping URLと言います。これは、PATH_INFOという環境変数から、トラックバックの対象となる発言番号を取得するようにしておくようにURLの体系を設計するのが無難です。
ここでひとつ、仕様上の問題が発生します。
上記の永続的URLと一致させるかどうかというものです。
一致させた場合のメリットとして、URLの体系がシンプルになり、トラックバックして下さるお客様にとってわかりやすいというものがあります。ところが、このようにすると、WebForumのスクリプト自体でトラックバックを受信するようにしなければなりません。既存のWebForumのスクリプトは、QUERY_STRINGという環境変数から諸々の情報を取得するように作られています。そのため、WebForum自体にトラックバックを受信する機能を付与するのであれば、全体をPATH_INFO対応にしなければならず、改造量がやや多くなってしまうというデメリットがあります。
逆に、トラックバック Ping URLを全く異なったURLとして設けることにすると、混乱を招かないようにするためにも、トラックバック受信用のCGIを別途作成する方がよいでしょう。それに、WebForum全体を注意深く改造するよりは、こちらの方が必要とされる注意力の量が少なくて済むはずです。
そして、トラックバックを受信したら、その情報をトラックバック用のログに蓄積していく必要があります。
あと、結構重要なのが、どのような表示にするか、ということ。もしかしたら、これが一番難しい問題かもしれません。
もしお問い合わせいただければ、私が実験の時に使ったコードを、そのまま提供させていただきます。