ページ 11

CGIでcookieを使って、訪問回数を数えたい

Posted: 2014年7月08日(火) 00:55
by たけのこ
CGIでcookieによる訪問回数のカウントを行いたいのですが、うまくできません。
次が私の書いたプログラムです。

コード:

#!/usr/bin/perl

use strict;
use warnings;
use CGI;
my $cgi = new CGI;
my $cookie = $cgi->cookie(-name    =>  'count',
                          -value   =>  0,
                          -expires =>  '+3M');
$cookie->value++; #この行があると実行できません(構文エラー?)
                          
                          
print("Content-Type: text/plain\n");
print("Content-Length: 13\n");
print("\n");
print $cookie->value;

exit(0);
一応いろいろなサイトを参考にしてプログラムを書いたのですが、仕組みをまだよく理解できておらず、意味もわからずに書いたものです。

Cookieがなければまず発行をするという作業をどのようにコードで書いた良いのかがわかりません。
またCookieのどの部分がカウントする値となるのかがわかりません。

ブラウザを閉じたときに訪問回数をリセットするようなものを作りたいです。

よろしくお願いします。

Re: CGIでcookieを使って、訪問回数を数えたい

Posted: 2014年7月08日(火) 09:00
by h2so5
$cookie->valueは関数ですので直接値を操作することはできません。
expiresを指定しないとブラウザを閉じたときにリセットされます。

コード:

#!/usr/bin/perl
# your code goes here

use strict;
use warnings;
use CGI;
my $cgi = new CGI;
my $cookie = $cgi->cookie(-name    =>  'count',
                          -value   =>  0);
$cookie->value($cookie->value + 1);
                          
                          
print("Content-Type: text/plain\n");
print("Content-Length: 13\n");
print("\n");
print $cookie->value;
 
exit(0);

Re: CGIでcookieを使って、訪問回数を数えたい

Posted: 2014年7月09日(水) 00:56
by トントン
PerlでCGIモジュール(CGI.pm)を使ってcookieを操作する覚え書き

example

コード:

use strict;
use warnings;
use CGI;
my $q = CGI->new;
my $cookie = $q->cookie("foo");
my $new_cookie = $q->cookie(
		-name => "foo",
		-value => ++$cookie,
	);
print $q->header(-type => 'text/html', -cookie => $new_cookie);
print $new_cookie->value() || $cookie;
参考になりますか?