List of cookie/setcookie.cgi

Mon Dec 10 11:59:55 2018

戻る

TEXTAREA で表示(カット&ペーストむき)

#!/usr/local/bin/perl5

# setcookie.cgi
# 1997/11/10 Ver.0.00
# 1997/11/14 Ver.0.01
# 1997/11/16 Ver.0.02
#
# (C) 1997 がま 
# e-mail addr : gama@mvg.biglobe.ne.jp

# ---------------------------------------------------------------------
# NAME
#       変数名 ここでは、NickName を設定しています。
$varname ="NickName";

# ---------------------------------------------------------------------
# expire  
#       有効期限を GMT で設定します。
#       ここでは 1000 日後に設定しています。(60秒*60分*24時間*1000日)
$expire=gmtime(time+60*60*24*1000);

# ---------------------------------------------------------------------
# path
#      MSIE 3.02 ではチルダが ~ と %7E でうまく処理できようです。
#      しかたがないので、最初の / だけ入れておきます。
$path="/";

$|=1;

# ---------------------------------------------------------------------
$ct = $ENV{"CONTENT_TYPE"};
$cl = $ENV{"CONTENT_LENGTH"};
read(STDIN, $in, $cl);
($name,$email,$hp) = split("&",$in);

# ----------------------------------------------------------------------
$name   = &str_cnvcode($name);
$email  = &str_cnvcode($email);
$hp     = &str_cnvcode($hp);

# Set-Cookie ---------------------------------------------
$cookie ="Set-Cookie: "
        ."$varname=$name&$email&$hp; "
        ."expires=$expire; "
        ."path=$path; "
        ."\n";
print $cookie;

# HTML ---------------------------------------------------

$cookie=~ s/&/&/g;                     # &
$cookie=~ s/</&lt;/g;                      # <
$cookie=~ s/>/&gt;/g;                      # >
$cookie=~ s/\r//g;                         #LF を削除

print "Content-type: text/html\n\n";
print "<HTML>";
print "<HEAD><TITLE>COOKIE の書き込みが完了しました</TITLE></HEAD>";
print "<BODY BGCOLOR=\"#FFFFFF\">\n";
print "<H2>COOKIE の書き込みが完了しました</H2>";
print "<HR>\n";
print "COOKIE に設定した内容は以下のとおりです<BR>";
print "<B>$cookie</B><BR>";
print "<HR>\n";
print "それでは、戻って 更新(RELOAD)してください。<BR>";
print "<HR>\n";
print "<CENTER>\n";
print "<A HREF=\"ssi.cgi?cookie.htm\">戻る</A>";
print "</CENTER>\n";
print "<HR>\n";
print "</BODY>\n";
print "</HTML>\n";

exit;

# --------------------------------------------------------
sub str_cnvcode {

        local($str)=$_[0];                      # サブルーチンの引数を

        $str=~ /=/;                             # = をさがして・・・
        $str=  $';				# その後ろ

        $str=~ s/\+/ /g;                        # + を space へ
        $str=~ s/%(..)/pack("c",hex($1))/ge;    # decode

        $str=~ s/ /%20/g;                       # encode
        $str=~ s/,/%2C/g;                       # encode
        $str=~ s/;/%3B/g;                       # encode
        $str=~ s/&/%26/g;                       # encode

        return($str);
}

戻る