6.ランダムに画像を表示させよう2

前回4でのランダムに画像を表示させるCGIを作りましたけど
その際はデータファイルを使いました。
今回はデータファイルなんてめんどくさい!!
画像専用ディレクトリに入れたファイルをランダム表示させるんだ!!
ってことで前回のに改造を施してみようと思います。

今回の場合セキュリティにとっては危ないことをしますので
サーバーによっては使用を拒否されたり突然削除されることもありえます。
また、cgiを置くサーバーと画像を置くサーバーは同一でないと動作しません。

その1 その3と別の方法で表示させるものもあります。
あわせて読んでみるといいかもしれません。

gazou2.cgi
#!/usr/local/bin/perl

#ディレクトリは変更時は両方変更しないと動作しません。
#たとえば http://192.168.0.50/ にCGIをおいて
#http://192.168.0.50/cg/ 内の画像をランダム表示させる場合
#$gdirは./cg/となり$gdiruはhttp://192.168.0.50/cg/となります。

$gdir ="./cg/"; #画像ディレクトリのこのcgiからの相対パス
$gdiru = "http://192.168.0.50/cg/"; #画像ディレクトリのURL

#----ここから----
#以下はSSIとして呼び出す場合には削除する
print "Content-type: text/html\n\n";
print "<html><head></head><body>\n";
#----ここまで----

opendir(DIR,$gdir);

foreach(grep(!/^\.{1,2}$/,readdir(DIR)))
{
push(@pics,$_);
}

$picn=@pics;
srand;
$picnn=int rand($picn);
print "<img src=$gdiru$pics[$picnn]>\n";

#----ここから----
#以下はSSIとして呼び出す場合には削除する
print "</body></html>\n";
#----ここまで----

exit;

一目瞭然ですがopendirとreaddirでファイル名を取得して
ランダム表示させています。
他にもデータが入っている場合などは講座2の拡張子チェッカーを
使って配列を作るといいかもしれませんね。

まあいろいろ試してみましょう。

もどる