Cookieの読み込みと書き出し

[上に] [前に] [次に]
miyu 1999/05/29(土) 01:55:31
Cookieの書き出しと読み込みについて以下のようなプログラムを
書きました.Cookieに書き込むのは,
$c_name (名前)と,$c_email (メールアドレス)です.

----- begin -----
sub read_cookie{     #Cookieの読み込み
@pairs  = split(/; */,$ENV{'HTTP_COOKIE'});
$buffer = shift(@pairs);
push( @pairs, split(/&/,$buffer) );

foreach $pair (@pairs) {
  ($name,$value) = split(/=/,$pair);
  $value =~ tr/+/ /;
  $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  $COOKIE{$name} = $value;
}
$c_name  = $COOKIE{'c_name'};
$c_email = $COOKIE{'c_email'};
}

sub write_cookie{     #Cookieの書き出し
$c_name  =~ s/(\W)/sprintf( "%%%02X", unpack("C", $1) )/eg;
$c_email =~ s/(\W)/sprintf( "%%%02X", unpack("C", $1) )/eg;
$tmp  = "Set-Cookie: ";
$tmp .= "c_name=$member&c_email=$email; ";
$tmp .= "expires=Thu, 1-Jan-2000 00:00:00 GMT;\n";

print "$tmp";
}

とほほさんのページを参考に,
Cookieに書き出す文字列を&でつなげておいて,
読み込む時にsplit(/&/,$buffer)で切ろうとしています.

ところが,環境によっては,splitが動作しないことが
分かりました.つまり,$c_maneの値がhoge&c_email のようになります.

動作OK: Netscape-Navigator 4.08 + MacOS8.1 68k
Internet Exploror4 + WindowsNT
動作NG: Netscape-Navigator 4/08 + MacOS8.5 PowerPC

またサーバの方に原因があるのかと思い,
SunOS3 + Perl5.0002
FreeBSD + Perl5.0003
でやってみましたが,FreeBSのほうは異常ありませんでした.
なにかおかしいところがありましたらご教示ください.

[上に] [前に] [次に]