[ 新規 | 編集 | 差分 ] [ 検索 | 一覧 | FrontPage ] [ 履歴 (RSS) | 差分履歴 (RSS) ] [ ログイン ]
【PR】Amazon | SL-C3000 | SL-C1000(3/18発売!) | SL-C860 | SL-6000W | SL-6000L | SL-6000N

WalWiki/カスタマイズ/クッキーを使用する

編集

一行コメント欄の名前、および管理者パスワードをクッキーで保存します。

[use cookie]

編集

グローバル変数定義

編集

クッキーに保存するフォームの変数名

my @cookie_list = ('mypassword','myname');                  # yakty add [use cookie]

クッキーの保持期限

my $cookie_expires = '+1M';                                 # yakty add [use cookie]

init_form()内の変更

編集
sub init_form {
    if (param()) {
        foreach my $var (param()) {
            $form{$var} = param($var);
        }
    } else {
        $ENV{QUERY_STRING} = $FrontPage;
    }

    &init_cookie;            # yakty add[use cookie]

embedded_to_html()内の変更

編集
sub embedded_to_html {
    my ($embedded) = @_;
    my $escapedmypage = &escape($form{mypage});
    my $escapedmyname = &escape($form{myname});                   # yakty add [use cookie]
    if ($embedded eq $embed_comment or $embedded eq $embed_rcomment) {
        my $lastmodified = &get_info($form{mypage}, $info_LastModified);
        $comment_no++; # yakty add [multi comment]
        return <<"EOD";
@{[sprintf(qq(<a name="#c%d"> </a>), $comment_no)]}<!-- yakty add [jump to part] -->
<form action="$url_xcg" method="post"><!-- yakty mod [for XREA] -->
    <input type="hidden" name="mycmd" value="comment">
    <input type="hidden" name="mypage" value="$escapedmypage">
    <input type="hidden" name="myLastModified" value="$lastmodified">
    <input type="hidden" name="mytouch" value="on">
    <input type="hidden" name="mycmtno" value="$comment_no"><!-- yakty add [multi comment] -->
    $resource{yourname}
    <input type="text" name="myname" value="$escapedmyname" size="10"><!-- yakty mod [use cookie] -->
    <input type="text" name="mymsg" value="" size="80">
    <input type="submit" value="$resource{commentbutton}">
</form>

init_cookie()追加

編集
# yakty add [use cookie] start
sub init_cookie {
    my $path = $ENV{'SCRIPT_NAME'};
    $path =~ s|[^/]+$||;
    foreach (@cookie_list){
        if(defined($form{$_})){
            &set_cookie($_, $form{$_}, path => $path);
        } else {
            $form{$_} = cookie(-name => $_);
        }
    }
}
# yakty add [use cookie] end

set_cookie()追加

編集
# yakty add [use cookie] start
sub set_cookie {
    #my ($name, $value, $path) = @_;
    my ($name, $value, %option) = @_;
    my $path = $option{'path'};
    if(length($path) == 0){
        $path = $ENV{'SCRIPT_NAME'};
        $path =~ s|[^/]+$||;
    }
    my $expires = ($option{'expires'}) ? $option{'expires'} : $cookie_expires;
    my $ck = cookie(
        -name       =>  $name,
        -value      =>  $value,
        -expires    =>  $expires,
        -path       =>  $path);
    print qq(Set-Cookie: $ck\n);
}
# yakty add [use cookie] end

03205