ページビューカウンター

はじめに

ページビューカウンター クッキーを利用したページビューカウンターです。
1つのページにつき1回だけカウントされます。

counter.cgi

#!/usr/bin/ruby -Ke

require "cgi"
require "gifcat"

cgi = CGI.new
count = 0
cookies = []

if !cgi.referer || cgi.cookies["pages"].include?( cgi.referer.to_s )
    File.open( "counter.txt" ) do |file|
        count = file.read.chomp.to_i
    end
else
    cgi.cookies["pages"].push cgi.referer
    cookies.push CGI::Cookie.new( "name" => "pages", "value" => cgi.cookies["pages"], "path" => "/" )

    File.open( "counter.txt", "r+" ) do |file|
        file.flock( File::LOCK_EX )
        count = file.read.chomp.to_i + 1
        file.rewind
        file.truncate( 0 )
        file.write count.to_s
    end
end

count = count.to_s
count = "0" * ( 7 - count.size ) + count
count = "l" + count + "r"

gif = GIFCat.new
gif.read_files( *count.split( "" ).collect{ |n| "image/#{n}.gif" } )

print "Pragma: no-cache\n"
print "Cache-Control: no-cache\n"
print "Expires: Thu, 01 Dec 1994 16:00:00 GMT\n"

cgi.out( {"type" => "image/gif", "cookie" => cookies} ) do
    gif.to_gif
end

スポンサード リンク

トラックバック

トラックバックURL
https://linux-life.net/tb/program/ruby/cgidoc/counter/page/
Linux Life 〜 No linux, No life 〜
プログラミング > Ruby > CGI入門 > アクセスカウンター > ページビューカウンター