[Tokyo.pm] mod_perl と cookie
Keiichi Okabe
k.okabe @ ntt-bb.com
2002年 2月 25日 (月) 23:35:35 CST
前田さん,お世話になります.というわけで,もう一回
岡部です.
mod_perlでcookieを取得する方法について教えてください.
win32用にはApache::Cookieがないようなので,(違ってたら教えて!)
こんな感じで取得しようとしていますが,
sub handler{
my $r = shift;
my $host = $r->get_remote_host;
my $header = $r->header_in('Cookie');
my %cookies = parse CGI::Cookie($header);
my $session_id = $cookies{'session_id'}->value if $cookies{'session_id'};
parse CGI::Cookie のところでおちてしまいます.
Apacheのログを見ると,以下のようなメッセージが出ているのですが,
Undefined subroutine &CGI::unescape called at C:/Perl/lib/CGI/Cookie.pm line 75.
Attempt to free unreferenced scalar.
どのように扱えばよいかよくわかりません.何かヒントでもいただけないでしょうか.
ちなみに作ってみているのは,アクセスカウントを行うスクリプトで
全体は以下のようになっています.
package Apache::Hello3;
use strict;
use CGI::Cookie;
use Apache::Constants qw(:common);
use Apache::Session::File;
our $base = 'C:/Program Files/Apache Group/Apache/lib/perl/Apache';
sub handler{
my $r = shift;
my $host = $r->get_remote_host;
my $header = $r->header_in('Cookie');
my %cookies = parse CGI::Cookie($header);
my $session_id = $cookies{'session_id'}->value if $cookies{'session_id'};
my %session;
tie %session,'Apache::Session::File',$session_id,
{Directory => "$base/lock"};
++$session{access};
my $state_cookie = CGI::Cookie->new(
-name => 'session_id',
-value => $session{_session_id}
);
$r->content_type('text/html');
$r->header_out('Set-Cookie' => $state_cookie);
$r->send_http_header;
$r->print(<<END);
<HTML>
<HEAD>
<TITLE>Hello There</TITLE>
</HEAD>
<BODY>
<H1>Hello $host</H1>
Your access: $session{access}, $session_id, $session{_session_id}
</BODY>
</HTML>
END
return OK;
}
1;
---
k.okabe @ ntt-bb.com 岡部 恵一
成功出於衆者、先知也、先知者、必取於人、知敵之情者也
孫子 用間篇 第十三
Tokyo-pm メーリングリストの案内