ラウンジでクッキーを使用するには

[上に] [前に] [次に]
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";

に変更したらグッドです。

ありがとうございました。

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