これはあんまり面白くないんですが、リクエストを戴いたので・・・
普通のアクセスカウンタと違い、訪れた人のOSやブラウザ、アクセス時間帯やどこからリンクされたかまで記録して解析してくれる素晴らしいCGIに、KENT WEBさんのAccess Reportがあります。
が、「DNSの逆引きが出来ない」@niftyではホスト名が取得できず、「123.456.78.90」のようなIPアドレスになってしまうので、「訪問者のホスト名情報」が、悲しいものになってしまいます。
ちなみに、ホスト名とは、通常
itbs****.ppp.infoweb.ne.jp
などと表示されるもので、この内「itbs****.ppp」の部分は、ダイヤルアップする度に変化するので、Access Reportでは、「*.infoweb.ne.jp」などとAP部分を丸めて、プロバイダ別の傾向を見易く集計してくれるのですが、ホスト名の取得できない@niftyでは、IPアドレスをそのまま集計するだけなので、まるで意味不明な集計になってしまいます。
いちおう、IPアドレスでも、ダイアルアップする度に変化するのは、
123.456.78.90
の、4レベル目のはずなので、ここを丸めて3レベル化するだけで、多少はまともな集計になるかも知れません。
そこで、名づけて、「ホスト名の取得できないサーバーでIPアドレスを丸めちゃうぞ作戦!」(長いってば)
方法としては、report.cgiの方で記録時に丸めちゃう方法と、replist.cgiの方で集計時に丸める方法があるのですが、後々、なんらかの方法でIPアドレスからホスト名を逆引きする方法がないでもないんで、replistの方をいじってみましょう。
単純な正規表現とマッチ文の組み合わせですが・・・
if ($host =~ /^(\d+)\.(\d+)\.(\d+)\.\d+$/) {$host = "$1\.$2\.$3";} この一行を、replist.cgiの65行目
($agent,$os,$host,$ref,$hour) = split(/<>/, $_); の下あたりに追加してみましょうか。
うーーん・・・、多少はマシになったようですが、たいしたことないなぁ、こりゃ。
こればっかりは、CGIの仕様にどんだけ慣れても、@niftyのどうしようもないところですね。
掲示板荒らしなどのセキュリティ対策にもホスト名の取得は必須なのに・・・
みんなでリクエストするしかないでしょうなー