CGI-BBS > CGI > Perl > 画像を日毎にローテーションさせて表示したい。


カレッヂ
カレッヂ


質問者 アスカ  投稿日 2004/3/18(木) 21:23:00
 初めまして。初心者です。

 複数の画像ファイル(※)から、1つの画像を日毎に変えて表示したいのです。
1つの画像ファイルを選ぶ方法はランダムでもローテーションでも構いません。
(※)画像ファイルは増やしていく予定なので、自動的に画像のみのファイル数を取得できるようにしたいのです。

Perlで以上のようなプログラミングをし、サイトを作りたいのです。
是非、教えてください。よろしくお願い致します。

プロバイダ参照:
サーバのOS:(未選択)
パソコンのOS:WinNT系
エディタ:
FTPソフト:
サーバ移転:していない
改造:(未選択)
CGI習熟度:firsttime

回答者 sim  [削除]  投稿日 2004/3/19(金) 03:04:58
#!/usr/local/bin/perl

#日付の取得
$today = (localtime(time))[3];

#更新日の取得
open(OPEN,"./lastdate.log");
@log = <OPEN>;
close(OPEN);

#日付変更時に画像の変更
if($log[0] != $today){
 #画像データの全読み込み(GIFのみ)./gifディレクトリを指定。
 opendir(DIR, "./gif");
 @imagefiles = grep { /\.gif/ } readdir(DIR);
 closedir(DIR);
 #画像ファイルのランダム取得
 $image = "./gif/".$imagefiles[rand(@imagefiles)];

 #データの更新
 open(OUT,"> ./lastdate.log");
 print OUT "$today\n";
 print OUT "$image";
 close(OUT);
}else{
 #同じ日付なら同じ画像
 $image = $log[1];
}
#GIF画像の出力
print "Content-type: image/gif\n\n";
#画像の書込
open(IMG,"$image");
binmode(IMG);
print while(<IMG>);
close(IMG);

これで<img src="gazou.cgi">とかで呼び出せるかと思います。
CGIで使うのであれば普通にprint"<img src=$image>";でいけると思います。
質問者 アスカ  [削除]  投稿日 2004/3/19(金) 21:10:03
 ありがとうございます。
大変うれしいです。
いつかsim様のようにプログラミング出来るようがんばりたいと思います。

このページは終了したので返信(回答)は書きこめません
 


Web裏技