Message Counter 3.20
■MCcout.cgi:コピーして拡張子をcgiにして保存してください。 #!/usr/local/bin/perl #この最初の1行はプロバイダによって違いますので確認してください。 #2行目は必ず空行にしておいてください。 #このスクリプトはPerl5を使っています。 #################################################################### # # Message Counter version 3.20 # # テキスト/画像切り替え # リロードによるカウントアップ切り替え(簡易版) # メッセージ機能付き (8桁まで) # ログファイル自動修復 # 飛ばない君2号仕様 # # Atelier H〜あとりえあっしゅ # info@atsh.com # http://www.atsh.com/ # #※このスクリプトの著作権はAtelier Hにあります。 # #################################################################### #初期設定 ##必要に応じて変更。 ###テキスト、画像を切り替える。0はテキスト、1は画像表示。 $tg = 0; ###リロードによるカウントアップ。0はする、1はしない。 $cu = 0; ###カウンターを表示するための<body>の設定。 $body = '<BODY BGCOLOR="#FFFFFF" TEXT="#000000">'; ##以下は特に必要なければこのまま。 ###カウントデータ格納ファイル $count1 = 'count1'; $count2 = 'count2'; ###数字の画像を入れるディレクトリ。 $img_dir = '../number/'; ##好みに応じて設定。 ###100番ごとのメッセージ。 $messe1 = '番GET! おめでとうございます。'; ###メッセージの色 $mcolor1 = "red"; ###数が揃ったときのメッセージ。 $messe2 = '番GET! 何かいいことあるかも。'; ###メッセージの色 $mcolor2 = "green"; ###SSIを使う場合は0、フレームを使う場合は1 $frame = 0; #################################################################### #以上が初期設定です。 #CGI初心者の方は、これ以降は変更しないでください。 # #必要なファイルを以下のように設定します。 # #▼SSIの場合 #public_html # | # index.shtml(Binary)・・・このカウンターと一緒に表示するページ。 # cgi-bin # | # MCcut.cgi(ASCII/755)・・・このスクリプト。 # count1(ASCII/666)・・・カウントした数字を入れる。 # count2(ASCII/666)・・・カウントした数字を入れる。 # number・・・カウンター用の数字を入れるディレクトリ。 # | テキスト表示する場合は必要ありません。 # 0.gif(Binary以下同じ)・・・表示する数字の画像。 # . (0〜9まで) # . # . # 9.gif # # #▼CGIの場合 #public_html # | # index.html(Binary)・・・フレームを指定するファイル。 # MCcut,html(Binary)・・・このカウンターと一緒に表示するページ。 # cgi-bin # | # MCcut.cgi(ASCII/755)・・・このスクリプト。 # count1(ASCII/666)・・・カウントした数字を入れる。 # count2(ASCII/666)・・・カウントした数字を入れる。 # number・・・カウンター用の数字を入れるディレクトリ。 # | テキスト表示する場合は必要ありません。 # 0.gif(Binary以下同じ)・・・表示する数字の画像。 # . (0〜9まで) # . # . # 9.gif # #ファイルの位置関係を変えた場合は、初期設定でそれぞれのファイルを相対パスで指定してください。 #パーミッションの設定は、プロバイダによって異なる場合があります。 #上手く動作しなかった場合はプロバイダに確認してください。 #################################################################### #カウントファイルの更新時を調べる if( (-M $count1) <= (-M $count2) ){ $rfile = $count1; $wfile = $count2; } if( (-M $count2) < (-M $count1) ){ $rfile = $count2; $wfile = $count1; } if (!open(CR, "<$rfile")) { &error('カウントファイルが読めません。');} $data = <CR>; close(CR); if(!$data){ &backup; } @counts = split(/,/, $data); ($counter,$add) = @counts; if ($cu != 0){ $new_add = $ENV{'REMOTE_ADDR'}; if($add ne $new_add){$counter++;$wr=1;}} else {$counter++;$wr=1;} if ($wr==1){ $wcounts = (join ',', $counter,$new_add); if (!open(CW, ">$wfile")){ &error('カウントファイルに書き込めません。');} flock($wfile,2); print CW $wcounts; close(CW); flock($wfile,8); } @cc = split(//, $counter); $number = @cc; $cc0 = $counter % 100; if ($cc0 == 0){ $comch = 1; } elsif ($number == 3){ $cc0 = $counter % 111; if($cc0 == 0){ $comch = 2; } } elsif ($number == 4){ $cc0 = $counter % 1111; if($cc0 == 0){ $comch = 2; } } elsif ($number == 5){ $cc0 = $counter % 11111; if($cc0 == 0){$comch = 2;} } elsif ($number == 6){ $cc0 = $counter % 111111; if($cc0 == 0){$comch = 2;} } elsif ($number == 7){ $cc0 = $counter % 1111111; if($cc0 == 0){$comch = 2;} } elsif ($number == 8){ $cc0 = $counter % 11111111; if($cc0 == 0){$comch = 2;} elsif ($number == 9){ $cc0 = $counter % 111111111; if($cc0 == 0){$comch = 2;} } elsif ($number == 10){ $cc0 = $counter % 111111111; if($cc0 == 0){$comch = 2;} else {$comch = 0;} #カウンターの表示/HTML形式。 #表示位置を変えたいときはここで設定してください。 print "Content-type: text/html\n\n"; if($frame){ print "<HTML>\n"; print "<HEAD>\n"; print "<META http-equiv=\"Content-Type\" CONTENT=\"text/html; charset=euc-jp\">\n"; print "<TITLE>Simple Ccounter</TITLE>\n"; print "</HEAD>\n"; print "$body\n"; print "<CENTER>\n"; } if (!$tg){ if ($comch == 1){ print "<FONT COLOR=\"$mcolor1\">$counter$messe1</FONT>\n"; } elsif ($comch == 2){ print "<FONT COLOR=\"$mcolor2\">$counter$messe2</FONT>\n"; } else { print "あなたは$counter番目の訪問者です。\n"; } } else { foreach (0..length("$counter")-1) { $img = substr($counter,$_,1); print "<img src=\"$img_dir$img.gif\" alt=\"$img\" border=\"0\">"; } if ($comch == 1){ print "<BR><FONT COLOR=\"$mcolor1\">$counter$messe1</FONT>\n"; } elsif ($comch == 2){ print "<BR><FONT COLOR=\"$mcolor2\">$counter$messe2</FONT>\n"; } } if($frame){ print "</CENTER>\n"; print "</BODY>\n"; print "</HTML>\n"; } exit; sub backup{ if (!open(LOG, "<$wfile")) { &error('ログファイルが読めません。');} $data = <LOG>; close(LOG); } sub error { print $_[0]; exit; }
■count1,count2:カウンターをスタートさせたい数字を入れてください。 0,
■フレームで表示させる場合 <HTML> <HEAD> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> <TITLE>Counter-CGI</TITLE> </HEAD> <FRAMESET ROWS="100,*" FRAMESPACING="0" FRAMEBORDER="no" BORDER="0"> <FRAME SRC="../cgi-bin/MCcut.cgi" SCROLLING ="no" NORESIZE MARGINWIDTH="0" MARGINHEIGHT="0" FRAMEBORDER="NO"> <FRAME SRC="***.html"> </FRAMESET> <NOFRAME> <BODY> <CENTER> このページはフレーム機能を使用しています。<BR> フレーム対応のブラウザをご使用ください。<BR> <A HREF="index.html">戻る</A> </CENTER> </BODY> </NOFRAME> </HTML>