ラウンジでクッキーを使用するには
[上に]
[前に]
[次に]
KAZU
1999/10/05(火) 13:15:44
ラウンジでメールアドレスやホームページを保存させるクッキーを
使用するにはどうすればいいのでしょうか?
過去のログも調べてみたのですが、ラウンジのどこに記述していいのか
良く分かりませんでした。
「メインルーチン」の「フォームデータを読み込む」のところなのか
「sub readParam」のところなのか
それともまったく別のところなのでしょうか?
Aurai
[E-Mail]
1999/10/06(水) 02:46:38
最新のスクリプトだと
># それぞれのページ表示にジャンプ
のすぐ前あたりでCOOKIEの読み書きをするといいんじゃないでしょうか
KAZU
1999/10/07(木) 20:31:34
># それぞれのページ表示にジャンプ
>のすぐ前あたりでCOOKIEの読み書きをするといいんじゃないでしょうか
回答ありがとうございます。
>$cookies = $ENV{'HTTP_COOKIE'};
>@spcookies = split(/;/,$cookies);
>foreach $cooking (@spcookies) {
>($name, $value) = split(/=/, $cooking);
>$name =~ s/ //g;
>$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
>$COOKIE{$name} = $value;
>}
>if($ARGV[0] eq "create" || $ARGV[0] eq "write"){
>print "Set-Cookie: FROM=$FORM{'FROM'}; expires=Fri, 31-Dec-2030 23:59:59 GMT\n";
>print "Set-Cookie: EMAIL=$FORM{'EMAIL'}; expires=Fri, 31-Dec-2030 23:59:59 GMT\n";
>$COOKIE{'FROM'} = $FORM{'FROM'};
>$COOKIE{'EMAIL'} = $FORM{'EMAIL'};
>}
以前のPerlをそのまま使ってみたのですがうまくいきません。
「NAME」と「FROM」の違いが影響しているのでしょうか?
Aurai
[E-Mail]
1999/10/08(金) 00:45:59
>以前のPerlをそのまま使ってみたのですがうまくいきません。
確認、確認……
ラウンジのスクリプトけっこう変わってますね
>「NAME」と「FROM」の違いが影響しているのでしょうか?
それもあります
どうせなので始めから書きます
まず、 Line:50 あたりにある
> # フォームデータを読み込む
のあたりで
$cookies = $ENV{'HTTP_COOKIE'};
@cooking = split(/;/,$cookies);
foreach $cooking (@cooking) {
($name, $value) = split(/=/, $cooking);
$name =~ s/ //g;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$COOKIE{$name} = $value;
}
以上の処理
次に
>sub appendMessage #($file, $lockflag)
の中の Line:600 あたりにある
> # ページを表示する
> print "Location: $ENV{'SCRIPT_NAME'}?print+$file\n\n";
の直前に
($csec, $cmin, $chour, $cmday, $cmon, $cyear, $cwday) = localtime(time + 90*24*60*60);
$cyear += 1900;
if ($csec < 10) { $csec = "0$csec"; }
if ($cmin < 10) { $cmin = "0$cmin"; }
if ($chour < 10) { $chour = "0$chour"; }
if ($cmday < 10) { $cmday = "0$cmday"; }
$cmon = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec')[$cmon];
$cwday = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday')[$cwday];
$expiresdate = "$cwday, $cmday\-$cmon\-$cyear $chour:$cmin:$csec GMT";
$FROM{'NAME'} =~ s/(\W)/sprintf("%%%02X", unpack("C", $1))/eg;
$FROM{'EMAIL'} =~ s/(\W)/sprintf("%%%02X", unpack("C", $1))/eg;
$FROM{'HPAGE'} =~ s/(\W)/sprintf("%%%02X", unpack("C", $1))/eg;
print "Set-Cookie: FROM=$FORM{'NAME'}; expires=$expiresdate;\n";
print "Set-Cookie: EMAIL=$FORM{'EMAIL'}; expires=$expiresdate;\n";
print "Set-Cookie: HPAGE=$FORM{'HPAGE'}; expires=$expiresdate;\n";
以上の処理
最後に
>sub showTopicPage #($file)
の中や
>sub showNewTopicPage
の中にあるフォームの適所にに VALUE="$COOKIE{'INPUTの名前'}" を設定
確認はしていません
動かなかったらまたどうぞ
ちなみにクッキーは90日間保存する設定になっています
変更するには
>($csec, $cmin, $chour, $cmday, $cmon, $cyear, $cwday) = localtime(time + 90*24*60*60);
をいじってください
KAZU
1999/10/14(木) 01:59:46
[[解決]]
うまくいきました!!。
一時は、とほほさんのクッキーの説明を読みながら悪戦苦闘して
追加発言後には値をアドレスを取得できるようになったのですが、
リロードすると消えてしまうので、どうしたものかと想っていました。
回答していただいた方法だと、名前だけどうしても保存してくれなかったので、
>print "Set-Cookie: FROM=$FORM{'NAME'}; expires=$expiresdate;\n";
を
print "Set-Cookie: NAME=$FORM{'NAME'}; expires=$expiresdate;\n";
に変更したらグッドです。
ありがとうございました。
[上に]
[前に]
[次に]