#!/usr/bin/perl
#--------------------
#環境設定
#--------------------
#jcode.plの位置
$Jco='./jcode.pl';

#漢字コード設定(EUC推奨)
$kanjicode = 'euc';

require $Jco;

if ($kanjicode eq 'euc') {
$encode = 'x-euc-jp';
} elsif ($kanjicode eq 'sjis') {
$encode = 'Shift_JIS';
}

#--------------------
#メイン処理
#--------------------
&init_form($kanjicode);
$Act = $form{'Act'};
if ($Act eq ''){
&inputscreen;
}elsif ($Act eq 'write') {
$na = $form{'name'};
$em = $form{'email'};
$ur = $form{'url'};

&makecookie($na,$em,$ur);
}
#--------------------
#終わり
#--------------------
exit;


#--------------------
#入力画面
#--------------------
sub inputscreen {
&readcookie;

&htmlhead;

$body=<<END;
<BODY>
<CENTER>
<FORM method="POST" action="./cooktest.cgi">
<INPUT type="hidden" NAME= "Act" VALUE="write">
<TABLE border="1" width="90%">
<TBODY>
<TR>
<TD align="center">クッキー試験
</TD>
</TR>
<TR>
<TD align="center">氏名:<INPUT size="45" type="text" name="name" value="$cname">
</TD>
</TR>
<TR>
<TD align="center">e-mail:<INPUT size="45" type="text" name="email" value="$cmail">
</TD>
</TR>
<TR>
<TD align="center">url<INPUT size="45" type="text" name="url" value="$curl">
</TD>
</TR>
<TR>
<TD align="center"><INPUT type="submit" value="テスト"><INPUT type="reset">
</TD>
</TR>
</TBODY>
</TABLE>
</FONT>
</CENTER>
END
print $body;

&htmlleg;
}
#--------------------
#サブルーチン終わり
#--------------------
exit;

#-------------------------
#クッキーの作成
#-------------------------
sub makecookie {
($secg,$ming,$hourg,$mdayg,$mong,$yearg,$wdayg,$ydayg,$isdstg) = gmtime(time + 30*24*60*60);

@GYOUBI = ("Sun","Mon","Tuey","Wed","Thu","Fri","Sat");
@GMONTH = ("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");

$YMCOOK = "YMCOOK=NAME:";
$YMCOOK .= $_[0];
$YMCOOK .= ",MALE:";
$YMCOOK .= $_[1];
$YMCOOK .= ",HTTP:";
$YMCOOK .= $_[2];
$YMCOOK .= ";";
$YMCOOK .= " expires=";
$YMCOOK .= sprintf("%s\, %02d-%s\-%04d %02d:%02d:%02d GMT", $GYOUBI[$wdayg],$mdayg,$GMONTH[$mong],$yearg+1900,$hourg,$ming,$secg);
$YMCOOK .= "\n";

$http=<<END;
Content-type: text/html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<META HTTP-EQUIV="Set-Cookie" content="$YMCOOK">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=$encode">
<META HTTP-EQUIV="Refresh" content="0;URL=./cooktest.cgi">
<HTML>
<HEAD>
</HEAD>
<BODY></BODY>
END
print $http;
&htmlleg;
}
#-------------------------
#サブルーチン終わり
#-------------------------
exit;


#-------------------------
#クッキーの読み取り
#-------------------------
sub readcookie {
$cookies = $ENV{'HTTP_COOKIE'};
@PAIRS1 = split(/;/,$cookies);
foreach $PAIR1 (@PAIRS1) {

($KEY1,$VLUE1) = split(/=/,$PAIR1);
$KEY1 =~ s/ //g;
if ($KEY1 eq "YMCOOK") {

@PAIRS2 = split(/,/,$VLUE1);
foreach $PAIR2 (@PAIRS2) {
($KEY2,$VLUE2) = split(/:/,$PAIR2,2);
$COOKTBL{$KEY2} = $VLUE2;
}
# last;
}
}
$cookies;
$cname=$COOKTBL{'NAME'};
$cmail=$COOKTBL{'MALE'};
$curl=$COOKTBL{'HTTP'};

}
#-------------------------
#サブルーチン終わり
#-------------------------
exit;


#-------------------------
#HTMLヘッダ出力
#-------------------------
sub htmlhead {

$http=<<END;
Content-type: text/html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=$encode">
<HTML>
<HEAD>
<TITLE>$namecgi</TITLE>
</HEAD>
END
print $http;
}
#-------------------------
#サブルーチン終わり
#-------------------------
exit;


#-------------------------
#HTMLフッタ出力(配布時の改変禁止)
#-------------------------
sub htmlleg {
$http=<<END;
<HR>
</BODY>
</HTML>
END
print $http;
}
#-------------------------
#サブルーチン終わり
#-------------------------
exit;


#-------------------------
#フォームの入力を分解するルーチン
#-------------------------
sub init_form {
local($query, @assocarray, $assoc, $property, $value, $charcode, $method);
$charcode = $_[0];
$method = $ENV{'REQUEST_METHOD'};
$method =~ tr/A-Z/a-z/;
if ($method eq 'post') {
read(STDIN, $query, $ENV{'CONTENT_LENGTH'});
} else {
$query = $ENV{'QUERY_STRING'};
}
@assocarray = split(/&/, $query);
foreach $assoc (@assocarray) {
($property, $value) = split(/=/, $assoc);
$value =~ tr/+/ /;
$value =~ s/%([A-Fa-f0-9][A-Fa-f0-9])/pack("C", hex($1))/eg;
&jcode'convert(*value, $charcode);
$form{$property} = $value;
}
}
#-------------------------
#サブルーチン終わり
#-------------------------
exit;