マサのWeb玉手箱 >> プロフィール 気まぐれ日記

学級日誌番外 (ホームページ作成ノウハウ集)

>>> 学級日誌番外トップ

19.CGIでファイルの最終更新日を取得するには (2012年9月1日)

◎環境
・独自 CGI が利用可能なこと
◎解説
Webサーバーに設置しているファイルの最終更新日を知りたいことがある。「マサのWeb玉手箱」では、掲示板データファイルの更新日を取得することにより、最終書き込みが行われた日付の表示を実現している。CGIでのポイントは2つあり、1つは stat関数によるファイルの最終更新時刻取得、そしてもう1つは localtime関数によるローカル時間への変換。これらにより求められた日時を、JavaScriptの文字列を表示する関数としてファイルに書き出している。HTML側では、表示したい場所に先ほどのJavaScript関数を配置する。
(1)CGI を用いて最終更新日表示用 JavaScript を生成する
            # JavaScript書き込みファイルを指定
            # (HTMLのヘッダーで読み込むファイル)
            $datafile = "getdate.js";
            # 最終更新日を取得するファイルのパスを指定
            $file = "bbs.dat";
            # stat関数の9番目の要素で最終更新時刻取得
            $modtime = (stat($file))[9];
            # localtime関数で読みやすい表記に変更
            ($sec, $min, $hour, $mday, $mon, $year) = localtime($modtime);
            # 年と月を補正
            $year = $year + 1900;
            $mon = $mon + 1;
            # データ書き込み
            open(DATA, ">$datafile") || die "データファイルが開けませんでした。";
            print DATA << "EOF";
            function printgetdate(){
              document.write("$year/$mon/$mday $hour:$min");
            }
            EOF
            close(DATA);
            
(2)ページの表示したい部分に JavaScript関数を埋め込む
            <a href="bbs.html">掲示板</a> 
            <script type="text/javascript">
              printgetdate();
            </script>更新
            
完成画面
完成画面

 

>>> マサがお勧めするCGIの本 (by Amazon.co.jp)