かんたん作成【HTML CSS JavaScript PHP CGI Perl Ruby Python .htaccess】

アクセスログ保存

#! /usr/local/bin/perl

$CHARSET      = 'Shift_JIS';
$COOKIENAME    = 'cookiecount';    # クッキー名
$COOKIELIFE    = 30;            # クッキー有効期限
$LOG        = './dat/log.dat';        # ログ保存ファイル
$LOGMAX        = 1000;            # ログ保存件数

loadCookie();                # 訪問回数読み込み・保存
writeLog();                # ログ保存

print qq(Content-type: text/html; charset=$CHARSET\n);
print qq(Set-Cookie: $COOKIENAME=$cookiecount; expires=$expires;\n\n);
print qq(<html>\n);
print qq(<head>\n);
print qq(<title>アクセスログ保存</title>\n);
print qq(</head>\n);
print qq(<body>\n);
print qq(<table>\n);
print qq(<th colspan="2">アクセスログ保存しました</th>\n);
($count, $tm, $agent, $addr, $referer, $cookiecount) = split(/\t/, $LOG[0]);
print qq(<tr><td>アクセスカウンター</td><td>$count</td></tr>\n);
print qq(<tr><td>時間(ミリ秒)</td><td>$tm</td></tr>\n);
print qq(<tr><td>ユーザーエージェント</td><td>$agent</td></tr>\n);
print qq(<tr><td>IPアドレス</td><td>$addr</td></tr>\n);
print qq(<tr><td>リンク元</td><td>$referer</td></tr>\n);
print qq(<tr><td>訪問回数</td><td>$cookiecount</td></tr>\n);
print qq(</table>\n);
print qq(</body>\n);
print qq(</html>\n);

exit;

#================================================ ログ保存
sub    writeLog
{
    my    $time = time;
    open(FILE, "+<$LOG");    
    eval{ flock(FILE, 2) };
    @LOG = <FILE>;
    my    ($count) = split(/\t/, $LOG[0]);
    $count++;
    unshift @LOG, "$count\t$time\t"
        . "$ENV{'HTTP_USER_AGENT'}\t$ENV{'REMOTE_ADDR'}\t$ENV{'HTTP_REFERER'}\t$cookiecount\t\n";
    while(@LOG > $LOGMAX) { pop @LOG; }
    seek(FILE, 0, 0);
    print FILE @LOG;
    close FILE;
}

#================================================ クッキーデータ読み込み・作成 (訪問回数)
sub    loadCookie
{
    $cookiecount = 0;
    my    ($pair);
    # クッキーデータ取り込み
    foreach $pair (split(/;\s*/, $ENV{'HTTP_COOKIE'})) {
        my    ($name, $cookie) = split(/=/, $pair);
        if($name eq $COOKIENAME) {
            $cookiecount = $cookie;
            last;
        }
    }
    # クッキーデータ作成
    $cookiecount++;                # 訪問回数+1
    @mon = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
    @wdy = qw(Sun Mon Tue Wed Thu Fri Sat);
    $life = $COOKIELIFE * 24 * 60 * 60;
    ($sec, $min, $hour, $day, $mon, $year, $wday) = gmtime(time + $life);
    $expires = sprintf("%s, %02d-%s-%04d %02d:%02d:%02d GMT",
        $wdy[$wday], $day, $mon[$mon], $year + 1900, $hour, $min, $sec);
}
CGI(Perl)
Hello world ! ユーザーエージェント取得・表示($ENV{'HTTP_USER_AGENT'})
IPアドレス取得・表示($ENV{'REMOTE_ADDR'}) リンク元取得・表示($ENV{'HTTP_REFERER'})
URL取得・表示($ENV{'HTTP_HOST'}, $ENV{'REQUEST_URI'}) 環境変数を全て表示(%ENV)
ホスト名取得・表示(gethostbyaddr) 訪問者のプロバイダーを表示
訪問者の都道府県を取得・表示 日付を表示(localtime time)
日付を画像表示(localtime time, substr) アクセス日時を表示(localtime time)
指定の日までの日数を表示 曜日によって背景色を変える
日によって背景色を変える 月によって背景色を変える
見るたびに背景色を変える 見るたびに背景画像を変える
おみくじ(rand, int) カラーチャート
Shift_JIS文字コード表 UTF-8文字コード表
グラフ(横棒グラフ) アクセスカウンター
アクセスカウンター(画像) アクセスカウンター(今日・昨日)
訪問回数(クッキー, $ENV{'HTTP_COOKIE'}, Set-Cookie) アクセスログ保存
アクセスログ集計 パスワード認証
クッションページ($ENV{'QUERY_STRING'}) クッションページ($ENV{'PATH_INFO'})
フォーム入力内容をクッキーに保存 1つのCGIでフレームページを表示
IPアドレスからホスト名を取得(gethostbyaddr) ホスト名からIPアドレスを取得(gethostbyname)
IPアドレスからプロバイダーを取得 IPアドレスから都道府県を取得
文章中の文字列を別の文字列に一括変換 カレンダー
カレンダー(前月・次月へのリンク付) カレンダー(今年1月〜12月)
掲示板 掲示板(URL自動変換/連続改行・スペース削除)
掲示板(年齢・性別・都道府県選択) 画像アップロード掲示板
チャット Web日記
サイトマップ(ディレクトリ内のファイルを調べる) Webデータ取得(HTTPヘッダー, HTMLソース, use Socket)
Webデータ取得(HTTPヘッダー, HTMLソース, use HTTP::Request::Common) トラックバック受信
トラックバック送信 メール送信(メールフォーム, sendmail)
リバーシ(ボードゲーム) .htaccessユーザー認証用ユーザーファイル作成
リダイレクト 条件指定リダイレクト
言語振り分けリダイレクト 条件指定アクセス拒否(ステータスコードを返す)
HTMLファイル読み込み・表示 HTMLファイル読み込み・パスワード認証
HTMLファイル読み込み・条件指定アクセス拒否 HTMLファイル読み込み・条件指定リダイレクト
外部CGIファイル読み込み(require) 画像ファイル読み込み・表示
画像縮小・拡大・サイズ変更(Image::Magick, Resize) 画像切り出し(Image::Magick, Crop)
画像文字埋め込み(Image::Magick, Annotate) 画像合成(Image::Magick, Composite)
画像生成・保存(Image::Magick->new) 画像合成アクセスカウンター
かんたん作成【HTML CSS JavaScript PHP CGI Perl Ruby Python .htaccess】