#!/usr/bin/perl # ---------------------------------------------------------------------------------- # Down Load Counter Version 2.00(カウント用) # # Script written by Nishiyama # This script is free # HomePage http://www.cgi-down.com/ # E-Mail webmaster@cgi-down.com # (1999/05/20-1999/09/24) # # 改変履歴 # # 1999-09-24 V2.00 集計表にグラフ表示を追加 # 1999-08-22 V1.11 集計表からダウンロードされたページへリンク追加 # 1999-05-29 V1.10 一部修正 # 1999-05-22 V1.00 正式リリース # # 再配布禁止 # 使用されたらメールをいただけると光栄です。 # 宜しかったらメールマガジンの朗読に登録をお願いします。 # バージョンアップ等の情報を配信します。 # ---------------------------------------------------------------------------------- # # ********************************************************************************** # オプション設定 ↓ここから # ********************************************************************************** # ------------------------------------------------------- # ファイル関連設定 ※必須 # ------------------------------------------------------- $jcode = './jcode.pl'; # jcode.plの位置 $datefile = './downcon.dat'; # データー記録ファイル # ********************************************************************************** # オプション設定終わり ↑ここまで # ---------------------------------------------------------------------------------- # これ以降書き換えをする場合は、個人の責任で行って下さい。 # ********************************************************************************** # [メイン処理] if (!(-r $jcode)) { &error(bat_jcode); } require $jcode; &read_form; @DATE = &read_file($datefile); ®istry; # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # [ファイルに記録] sub registry { $down = $FORM{'down'}; $name = $FORM{'name'}; $hp = $FORM{'hp'}; # IPアドレスを取得 $new_addr = $ENV{'REMOTE_ADDR'}; # ホスト名取得 $new_host = $ENV{'REMOTE_HOST'}; # ブラウザ情報取得 $new_agent = $ENV{'HTTP_USER_AGENT'}; # 現在時間の取得 ($new_date,$sc) = &time; $m = 0; foreach $lines (@DATE) { local($date,$cginame,$count,$addr,$host,$agent,$hp) = split(/☆|★/,$lines); if ($name eq $cginame) { $m = 1; $count++; $lines = "$new_date☆$name☆$count☆$new_addr☆$new_host☆$new_agent☆$hp★\n"; } push(@NEW,$lines); } # 既存の場合 if ($m == 1) { if (!open(OUT, ">$datefile")) { &error(bat_file); } print OUT @NEW; close (OUT); } # 新規の場合 elsif ($m == 0) { if (!open(OUT, ">>$datefile")) { &error(bat_file); } $count = 1; print OUT "$new_date☆$name☆$count☆$new_addr☆$new_host☆$new_agent☆$hp★\n"; close (OUT); } print "Location: $down\n\n"; exit; } # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # [記録ファイルの読み込み] sub read_file { local($date_file) = $_[0]; if (!open(IN,$date_file)) { &error(bat_file); } local(@date_files) = ; close(IN); return @date_files; } # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # [フォームデータを取得し、文字コード統一] sub read_form { local($pair,$form_date); if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $form_date, $ENV{'CONTENT_LENGTH'}); } else { $form_date = $ENV{'QUERY_STRING'}; } local(@pairs) = split(/&/,$form_date); foreach $pair (@pairs) { local($name,$value) = split(/=/,$pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; $value =~ s/"/"\;/g; $value =~ s/<>/>\;<\;/g; &jcode'convert(*value,'sjis'); $FORM{$name} = $value; } } # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # [現在時刻を取得] sub time{ ($sec,$min,$hour,$mday,$mon,$year,$wday) = localtime(time); $year = $year + 1900; $mon = sprintf("%.2d",$mon +1); $mday = sprintf("%.2d",$mday); $hour = sprintf("%.2d",$hour); $min = sprintf("%.2d",$min); $sec = sprintf("%.2d",$sec); # 曜日を日本語化 @week = ('日','月','火','水','木','金','土'); $wday = $week[$wday]; local($date) = "$year年$mon月$mday日($wday) $hour時$min分$sec秒"; $sc = time; return ($date,$sc); } # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # [エラー関連] sub error { $error = $_[0]; if ($error eq "bat_jcode") { $error_message = 'jcode.pl が見つかりません'; } elsif ($error eq "bat_file") { $error_message = 'データファイルがありません'; } print "Content-type: text/html\n\n"; print "$error_message\n"; print "\n"; print "


\n\n"; print "\n"; print "\n\n"; print "\n"; print "\n\n"; print "\n"; exit; }
\n"; print "エラー\n"; print "$error_message