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のほうは異常ありませんでした.
なにかおかしいところがありましたらご教示ください.
[上に]
[前に]
[次に]