• ベストアンサー

リンク先を更新したら「New]等の画像がメニューに表示され、一定期間が過ぎると「new」画像が削除される方法

タイトルままなのですが、メニューのボタンにリンク先(他のページや他のサイト)が更新されると「NEW」などの画像を表示し、数日後、自動的に「NEW」画像を消すようなプログラムはありますでしょうか。 PHPやSSIでもいいのですが、サーバの関係で他のサーバにCGIを置いているので相対パスではファイル指定できない場合があります。 リンク先はCGIの掲示板や日記です。 ログファイルの情報を取得するような形になるのでしょうか。 「面倒だから手動の方が・・・」とのご意見もあるかと思いますが、作成者と管理人が異なる為、手動でHTMLを加工ということができません。 どなたかご教示お願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.2

更新日を得たいCGIを置いている他のサーバも、自前cgiをおけるサーバーという前提で、以下の方法はいかがでしょう? 更新日を得たいCGIを置いている他のサーバに、もう一つ更新日画像表示用cgiを置いて そのcgiから、ログ更新日によってnew画像を出力させる。 newを表示したいほうのhtmlは、imgタグでそのサーバーのcgiを呼び出せばよい。 niftyの@homepageスペースなど、html表示サーバーとcgi実行サーバーが別になっていて SSIも使えないサーバーで使える手です。 更新日表示用cgiは、#1の方の2番目のリンクにあるプログラムなどで。 perlプログラミングを少しやったことがあるなら、 該当ログファイルの更新日を取得して、本日と比べて、 差がn日以内なら、new用の画像出力、もっと古ければ、white透過画像出力 の手順で完全自作も可能かもしれません。 あ、phpでも十分可能ですね。 その別のcgiサーバーでどの言語が使えるのかによりますが。

Rafi
質問者

お礼

御回答ありがとうございます。 まさにおっしゃるような環境です。 この方法だと環境を選ばないでいろいろ応用がありそうですね。 Perlプログラミング、必要ですか・・・ 今までのらりくらりと逃げてきましたが、そろそろ本当に必要な時期なのかも・・・・ サーバで使えているのは確認しているのはPerlです。 自作・・・楽しそう・・・でもつらそう(泣)。 「Perl=CGIの言語らしい」程度しか認識できてないレベルなんですが、ちょっとその辺、勉強してみます。

その他の回答 (2)

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.3

配布ものは、いろいろ高機能なのは多いけど、今回みたいな割と単純そうなのは少ないですね。 プログラミング入門にはちょうどよさそうな題材ではあります。 一番単純な形で書いてみますので、エラーチェックや複数ログ対応などは、調べて考えてみてください。 #!/usr/local/bin/perl ### ↑ この行はサーバーのperlに合わせる ### ↓ '' に更新日をチェックしたいファイル名 $days = -M 'log_file.log'; ### -M ファイル更新日からの経過日数を得る ### ↓ 3日以内はnew.gif 3を適当に書き換え if($days <=3 ){ $image = 'new.gif'; }else{ $image = 'space.gif'; } print "Content-type: image/gif\n\n"; ### gif画像用ヘッダー open (IMG, "< $image"); ### 読み込み専用 while(<IMG>){ print $_; } close IMG; exit; ### 実行チェックしてないのでスペル間違いがあったら済みません。

Rafi
質問者

お礼

お礼が遅れて申し訳ありません。 現在、連休後半、教えて頂いた内容をお試し中です。 まだ成功してはいませんが、これを覚えればかなり楽に成りそうなので、地道にやっていこうと思います。 ありがとうございました。

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.1

PAINTER PLACE Of Rest Place Of Horse (http://homepage2.nifty.com/masarou/)で配布されていたCGIではそれができたのですが、今は一時閉鎖だそうで。(CGI-ZOO:参考URL1で「何処でも更新表示] を検索してみてください。) ただ、掲示板などを置いているサーバで掲示板のログファイルなどが、他のサーバからアクセスできないように設定してあれば(セキュリティ上はそうあるべきでしょう)、どちらにせよ更新日を得る事は不可能です。 参考URL2のCGIのようなJavascriptを返すタイプのCGIを掲示板を置いているサーバ側に置いておけば、他のサーバからも実行結果を得る事ができるかも。(当然Javascript Offの環境では動きませんが)

参考URL:
http://www.i-say.net/cgi/,http://wws.cside.com/cgi-plant/getstamp/
Rafi
質問者

お礼

御回答ありがとうございます。 前回に引き続きお世話になってます。(^_^;) 他サーバの情報ですから、その通りなんですよね。 他のサーバからの実行結果を得る方法・・・。 試してみます。