送受信_環境変数 ENV - 演習編

Problem4: 閲覧者それぞれが見た回数を表示する cookie カウンターを作ってみよう

閲覧者のパソコンに、その閲覧者の訪問回数を記録して、連結画像として表示するカウンターを作ってください。

⇒ ヒント

Hint

  1. 連結画像カウンター」を少しだけ書き換えるだけです
  2. カウント数を、閲覧者のブラウザの cookie に保存します

⇒ 答え

Solution

閲覧者の cookie からカウント数を読み取り、1を足して、再び cookie として送り込みます。

#!/usr/local/bin/ruby
countimg = "count.gif"
Fonts    = Dir.glob("font/*.*").sort

count = 0
count = $1.to_i if /\bCKCOUNT=(\d+)\b/ =~ ENV['HTTP_COOKIE'].to_s
count += 1

a = ["convert","+append"]
for n in ("%03d" % count).split(//) do
  a += [ Fonts[n.to_i] ]
end
a += [countimg]
r = system(*a) rescue false
countimg = Fonts[0] unless r
Process.waitall

cookie  = "CKCOUNT=#{ count }; "
cookie += ( Time.now + 60*60*24*90 ).gmtime.strftime("expires=%a, %d-%b-%Y %H:%M:%S %Z; ")
cookie += "path=/; "

print <<EOS
Content-Disposition: filename="#{ ("%03d" % count) }.gif"
Content-type:   image/gif
Content-Length: #{ File.size( countimg ) }
Set-Cookie:     #{ cookie }

EOS
f = File.open( countimg ,"rb")
STDOUT.binmode
while line = f.gets do
  print line
end
f.close

⇒ 次の問題に進む

以上です。

Last updated 16.Sep.2006 [ Home ] [ Up ] [ 質問メール ]
Copyright © 2005-2006 Shigeru Konno All Rights Reserved..