#!/usr/local/bin/perl

#-----------------------------------------------------#
#       STAR LEGENDキャラデータベースver1             #
#                                                     #
#                                                     #
#-----------------------------------------------------#
require './jcode.pl';

#-------------------初期設定--------------------------#
#設置前に以下の''内を適切なものに書き換えてください。

#各ファイルのアドレス。
#デフォルトで上手くいかない場合はhttp://から始まるアドレスに書き換えてください。
#db.cgiのアドレス
$DB = 'db.cgi';
#SLform.jsのアドレス
#$JavaScript = './SLform.js';
#nd.jpgのアドレス
$JPG = './nd.jpg';

#親サイトのアドレス
$homepage = '';

#管理人用全キャラ共通パスワード
#（マスターキーみたいなもので全てのキャラデータにアクセスできます。）
$master_pass = '0123';

#-----------------------------------------------------#
if ($ENV{REQUEST_METHOD} eq POST) {
read (STDIN, $POSTED ,$ENV{CONTENT_LENGTH});
} else {
$POSTED = $ENV{QUERY_STRING};
}
@PnVALUE = split(/&/,$POSTED);
foreach $new (@PnVALUE) {
($name, $value) = split(/=/, $new);
$value =~ tr/+/ /;
$value =~ s/%([A-Fa-f0-9][A-Fa-f0-9])/pack("C", hex($1))/ge;
$value =~ s/\"/”/g;
$value =~ s/\,/，/g;
$value =~ s/\</&lt;/g;
$value =~ s/\>/&gt;/g;
$value =~ s/\&lt;br&gt;/<br>/g;
$value =~ s/\r\n/<br>/g;
$value =~ s/\r|\n/<br>/g;
&jcode'convert(*value,sjis);
$P{$name} = $value;
}
open (SL, '<SL.dat') || die "オープンエラー:$!";
@SLdat = <SL>;
close (SL);
if ($P{mode} eq 'profile_mode') { &profile_mode; }
elsif ($P{mode} eq 'form_mode_edit') { &form_mode; }
elsif ($P{mode} eq 'form_mode_new') {&form_mode;}
elsif ($P{mode} eq 'search_mode') {&search_mode;}
elsif ($P{mode} eq 'print_mode') {&print_mode;}
elsif ($P{mode} eq 'del_mode') {&del_mode;}
elsif ($P{mode} eq 'del_input') {&del_input;}
elsif ($P{mode} eq 'input') {&input;}
else {&view_mode;}

#----------------一覧（view_mode）--------------------#
sub view_mode {
&htmlhead;
foreach $profile (@SLdat) {
($mark,$number,$date,$player,$name,$job,$class1,$class2,$class3,$str,$dex,$ref,$int,$wil,$soc,$str_n,$dex_n,$ref_n,$int_n,$wil_n,$soc_n,$hp,$mp,$ap,$str_n,$dex_n,$ref_n,$int_n,$wil_n,$soc,$str_n,$dex_n,$ref_n,$int_n,$wil_n,$soc_n,$hp,$mp,$ap,$photo,$story,$log,$rev,$lifelevel,$age,$jender,$heit,$weit,$eyes,$hair,$skin,$birthday,$origin,$career,$encounter,$normalskill,$superskill,$outfit,$connection,$evolution,$exp,$pass,) = split(/\,/, $profile);
print "<table width=760px border=1>\n";
print "<tr>\n";
print "<td width=380px><span class=post>$job<span><br>";
if ($name eq '') {$name = "〜未定〜";}
print "<span class=name><a href=$DB?mode=profile_mode&number=$number>$name</a></span></td>\n";
if ($exp eq '') {$exp = "0";}
print "<td width=300px><span class=name><a href=$DB?mode=search_mode&s_player=$player>$player</a></span>　（経験点：$exp）<br>";
print "$class1";
print " $class2";
print " $class3";
print "</td>\n";
print "<td width=80px><span class=date>Latest Update<br><div align=right class=date>$date</td>\n";
print "</tr>\n";
print "</table>\n";
}
&htmlfoot;
}
#----------------検索（search_mode）------------------#
sub search_mode {
&htmlhead;
if ($P{s_style} ne '') {
foreach $check (@SLdat) {
($mark,$number,$date,$player,$name,$job,$class1,$class2,$class3,$str,$dex,$ref,$int,$wil,$soc,$str_n,$dex_n,$ref_n,$int_n,$wil_n,$soc_n,$hp,$mp,$ap,$photo,$story,$log,$rev,$lifelebel,$purse,$age,$jender,$heit,$weit,$eyes,$hair,$skin,$birthday,$origin,$career,$encounter,$birthday,$origin,$career,$encounter,$birthday,$origin,$career,$encounter,$birthday,$origin,$career,$encounter,$normalskill,$superskill,$outfit,$connection,$evolution,$exp,$pass,) = split(/\,/, $check);
if ($class1 ne $P{s_style}) {if ($class2 ne $P{s_style}) {if ($class3 eq $P{s_style}) {push (@result, $check);}}}
if ($class1 ne $P{s_style}) {if ($class2 eq $P{s_style}) {push (@result, $check);}}
if ($class1 eq $P{s_style}) {push (@result, $check);}
}
}
if ($P{s_player} ne '') {
foreach $check (@SLdat) {
($mark,$number,$date,$player,$name,$job,$class1,$class2,$class3,$str,$dex,$ref,$int,$wil,$soc,$str_n,$dex_n,$ref_n,$int_n,$wil_n,$soc_n,$hp,$mp,$ap,$photo,$story,$log,$rev,$lifelebel,$purse,$age,$jender,$heit,$weit,$eyes,$hair,$skin,$birthday,$origin,$career,$encounter,$normalskill,$superskill,$outfit,$connection,$evolution,$exp,$pass,) = split(/\,/, $check);
if ($player eq $P{s_player}) {push(@result, $check);}
}
}
if ($P{keyword} ne '') {
foreach $check (@SLdat) {
if (index($check, $P{keyword}) >-1) {push(@result, $check);}
}
}
foreach $profile (@result) {
($mark,$number,$date,$player,$name,$job,$class1,$class2,$class3,$str,$dex,$ref,$int,$wil,$soc,$str_n,$dex_n,$ref_n,$int_n,$wil_n,$soc_n,$hp,$mp,$ap,$photo,$story,$log,$rev,$lifelebel,$purse,$age,$jender,$heit,$weit,$eyes,$hair,$skin,$birthday,$origin,$career,$encounter,$normalskill,$superskill,$outfit,$connection,$evolution,$exp,$pass,) = split(/\,/, $profile);
print "<table width=750px border=1>\n";
print "<tr>\n";
print "<td width=370px><span class=post>$job<span><br>";
if ($name eq '') {$name = "〜未定〜";}
print "<span class=name><a href=$DB?mode=profile_mode&number=$number>$name</a></span></td>\n";
if ($exp eq '') {$exp = "0";}
print "<td width=300px><span class=name><a href=$DB?mode=search_mode&s_player=$player>$player</a></span>　（経験点：$exp）<br>";
print "$class1";
print "$class2";
print "$class3";
print "</td>\n";
print "<td width=80px><span class=date>Latest Update<br><div align=right class=date>$date</td>\n";
print "</tr>\n";
print "</table>\n";
}
&htmlfoot;
}
#----------------個別（profile_mode）-----------------#
sub profile_mode {
&htmlhead;
foreach $profile (@SLdat) {
($mark,$number,$date,$player,$name,$job,$class1,$class2,$class3,$str,$dex,$ref,$int,$wil,$soc,$str_n,$dex_n,$ref_n,$int_n,$wil_n,$soc_n,$hp,$mp,$ap,$photo,$story,$log,$rev,$lifelebel,$purse,$age,$jender,$heit,$weit,$eyes,$hair,$skin,$birthday,$origin,$career,$encounter,$normalskill,$superskill,$outfit,$connection,$evolution,$exp,$pass,)=split(/\,/,$profile);
if ($P{number} == $number) { last; }
}
$story =~ s/([^=^\"]|^)((http):[!#-9A-~?=&_]+)/$1<a href=$2>$2<\/a>/g;
$evolution =~ s/([^=^\"]|^)((http):[!#-9A-~?=&_]+)/$1<a href=$2>$2<\/a>/g;
$normalskill =~ s/([^=^\"]|^)((http):[!#-9A-~?=&_]+)/$1<a href=$2>⇒<\/a>/g;
$superskill =~ s/([^=^\"]|^)((http):[!#-9A-~?=&_]+)/$1<a href=$2>⇒<\/a>/g;
$outfit =~ s/([^=^\"]|^)((http):[!#-9A-~?=&_]+)/$1<a href=$2>⇒<\/a>/g;
print "<form action=$DB method=POST>\n";
print "<input type=hidden name=mode value=form_mode_edit>\n";
print "<input type=hidden name=number value=$number>\n";
print "<table border=2 width=760px>\n";
print "<tr><th width=0% align=left>\n";
print "<table border=0 width=100%>\n";
print "<tr><th align=left><span class=post>$job</span></th></tr>\n";
print "<tr><th align=left><span class=name>$name</span></th></tr>\n";	
print "</table>\n";
print "</th>\n";
print "<th width=60%>\n";
print "<table border=0 width=100%>\n";
if ($exp eq'') {$exp = "0"};
print "<tr><th width=25%><span class=name><a href=$DB?mode=search_mode&s_player=$player>$player</a></span></th>\n";
print "<th width=60% colspan=6><span class=post>$class1";
print " $class2";
print " $class3";
print "</span></th></tr>\n";
print "<tr><th rowspan=3>（経験点：$exp）</th>\n";
print "<tr><th width=10%><span class=post>体力：$str</span></th>\n";
print "<th width=10%><span class=post>器用：$dex</span></th>\n";
print "<th width=10%><span class=post>敏捷：$ref</span></th>\n";
print "<th width=10%><span class=post>知性：$int</span></th>\n";
print "<th width=10%><span class=post>意思：$wil</span></th>\n";
print "<th width=10%><span class=post>社交：$soc</span></th></tr>\n";
print "<tr><th width=10% class=post>修正：+$str_n</th>\n";
print "<th width=10% class=post>修正：+$dex_n</th>\n";
print "<th width=10% class=post>修正：+$ref_n</th>\n";
print "<th width=10% class=post>修正：+$int_n</th>\n";
print "<th width=10% class=post>修正：+$wil_n</th>\n";
print "<th width=10% class=post>修正：+$soc_n</th></tr>\n";
print "</table>\n";
print "</td></tr>\n";
if ($photo eq '') { $photo = $JPG; }
print "<tr><td bgcolor=#c0c0c0 align=center valign=middle><img src=$photo></td>\n";
print "<td bgcolor=#c0c0c0>\n";
print "<table border=0 width=100%>\n";
print "<tr><th width=20% class=post>ＨＰ：$hp</th>\n";
print "<th width=20% class=post>ＭＰ：$mp</th>\n";
print "<th width=20% class=post>ＡＰ：$ap</th></tr>\n";
print "</table>\n";
print "生活レベル：$lifelebel　所持金：$purse<br>\n";
print "年齢：$age　　性別：$jender　　身長：".$heit."cm　　体重：".$weit."kg<br>\n";
print "瞳の色：$eyes　　髪の色：$hair　　肌の色：$skin　　誕生日：$birthday<br>\n";
print "出自：$origin　　経歴：$career　　邂逅：$encounter\n";
$story =~ s/\r/<br>/g;
print "<table border=0 width=100%>\n";
print "<p>ストーリー：$story</p>\n";
$log =~ s/\r/<br>/g;
print "<p>碑文字：$log</p>\n";
$evolution =~ s/\r/<br>/g;
print "<p>経験点消費：$exp<br>$evolution</p>\n";
$rev =~ s/\r/<br>/g;
print "<p>REV値：$exp<br>$rev</p>\n";
print "</table>\n";
print "</td></tr>\n";
print "<tr><td colspan=2 bgcolor=#d5d5d5>\n";
print "<table border=0 width=100%>\n";
$normalskill =~ s/\r/<br>/g;
print "<tr><td valign=top width=32% height=50%><span class=data>$normalskill</td>\n";
$superskill =~ s/\r/<br>/g;
print "<td rowspan=2 valign=top width=32%><span class=data>$superskill</td>\n";
$outfit =~ s/\r/<br>/g;
print "<td rowspan=2 valign=top width=36%><span class=data>$outfit</td></tr>\n";
$connection =~ s/\r/<br>/g;
print "<tr><td valign=top width=32% height=50%><span class=data>$connection</td></tr>\n";
print "</table>\n";
print "</td></tr>\n";
print "<form action=$DB method=POST>\n<tr>\n";
print "<input type=hidden name=mode value=form_mode_edit>\n";
print "<input type=hidden name=number value=$number>\n";
print "<th colspan=2 align=center>\nパスワード:<input type=password name=pass size=15>\n";
print "<input type=submit value=編集／訂正></th></tr></form>\n";
print "<form action=$DB method=POST>\n";
print "<input type=hidden name=mode value=del_mode>\n";
print "<input type=hidden name=number value=$number>\n";
print "<tr><td align=center>パスワード:<input type=password name=pass size=15>\n";
print "<input type=submit value=削除>\n</td></form>\n";
print "<form action=$DB method=POST>\n";
print "<input type=hidden name=mode value=print_mode>\n";
print "<input type=hidden name=number value=$number>\n";
print "<td align=right>\n";
print "<select name=size><option value=a4>Ａ４（左右余白15mm）</option><option value=b5>Ｂ５（左右余白15mm）</option>\n";
print "<option value=a4max>Ａ４（左右余白3mm）</option><option value=b5max>Ｂ５（左右余白3mm）</option></select>\n";
print "　<select name=img><option value=1>画像イメージあり</option><option value=0>画像イメージなし</option><select>\n";
print "　<input type=submit value=印刷用画面></td></tr></form>\n";
print "</table>\n";
&htmlfoot;
}
#----------------印刷用表示モード(print_mode)---------------------#
sub print_mode {
print "Content-type: text/html\n\n";
print << "EOH";
<html>
<head>
<title>Ｎ◎ＶＡキャラデータベース</title>
<META name="robots" content="noindex">
<meta http-equiv="Content-Type" content="text/html; charset=x-sjis">
<style type="text/css">
<!--
td{font-family:'ＭＳ Ｐゴシック';font-size:10pt;color:#000000;background-color:#e0e0f0;padding:1pt;line-height:13pt;}
th{font-family:'ＭＳ Ｐゴシック';font-size:10pt;color:#000000;background-color:#aaaaee;padding:1pt;line-height:13pt;text-align:center;font-weight:bold;}
A:link{font-family:'ＭＳ Ｐゴシック';font-size:11pt;font-weight:bold;color:#0000FF;}
A:visited{font-family:'ＭＳ Ｐゴシック';font-size:11pt;font-weight:bold;color:#0000CC;}
.post{font-family:'ＭＳ Ｐゴシック';font-size:9pt;color:#000000;}
.date{font-family:'ＭＳ Ｐゴシック';font-size:9pt;color:#999999;}
.name{font-family:'ＭＳ Ｐゴシック';font-size:11pt;color:#000000;font-weight:bold;}
.data{font-family:'ＭＳ Ｐゴシック';font-size:9pt;color:#000000;}
-->
</style>
</head>
<body bgcolor="#ffffff" text="#000000" link="#0000aa" vlink="#00006a" alink="#30c030">
EOH
foreach $profile (@SLdat) {
($mark,$number,$date,$player,$name,$job,$class1,$class2,$class3,$str,$dex,$ref,$int,$wil,$soc,$str_n,$dex_n,$ref_n,$int_n,$wil_n,$soc_n,$hp,$mp,$ap,$photo,$story,$log,$rev,$lifelebel,$purse,$age,$jender,$heit,$weit,$eyes,$hair,$skin,$birthday,$origin,$career,$encounter,$normalskill,$superskill,$outfit,$connection,$evolution,$exp,$pass,)=split(/\,/,$profile);
if ($P{number} == $number) { last; }
}
$story =~ s/([^=^\"]|^)((http):[!#-9A-~?=&_]+)/$1<a href=$2>$2<\/a>/g;
$log =~ s/([^=^\"]|^)((http):[!#-9A-~?=&_]+)/$1<a href=$2>$2<\/a>/g;
$evolution =~ s/([^=^\"]|^)((http):[!#-9A-~?=&_]+)/$1<a href=$2>$2<\/a>/g;
$normalskill =~ s/([^=^\"]|^)((http):[!#-9A-~?=&_]+)/$1<a href=$2>⇒<\/a>/g;
$superskill =~ s/([^=^\"]|^)((http):[!#-9A-~?=&_]+)/$1<a href=$2>⇒<\/a>/g;
$outfit =~ s/([^=^\"]|^)((http):[!#-9A-~?=&_]+)/$1<a href=$2>⇒<\/a>/g;
if ($P{size} eq 'b5max') {print "<table border=2 width=650px>\n";}
elsif ($P{size} eq 'b5') {print "<table border=2 width=570px>\n";}
elsif ($P{size} eq 'a4max') {print "<table border=2 width=750px>\n";}
else {print "<table border=2 width=670px>\n";}
print "<tr><th width=0% align=left>\n";
print "<table border=0 width=100%>\n";
print "<tr><th align=left class=post>$job</th></tr>\n";
print "<tr><th align=left class=name>$name</th></tr>\n";	
print "</table>\n";
print "</th>\n";
print "<th width=60%>\n";
print "<table border=0 width=100%>\n";
if ($exp eq'') {$exp = "0"};
print "<tr><th width=25% class=name><a href=$DB?mode=search_mode&s_player=$player>$player</a></th>\n";
print "<th width=60% colspan=6 class=post>$class1";
print " $class2";
print " $class3";
print "</th></tr>\n";
print "</span></th></tr>\n";
print "<tr><th rowspan=3>（経験点：$exp）</th>\n";
print "<tr><th width=10%><span class=post>体力：$str</span></th>\n";
print "<th width=10%><span class=post>器用：$dex</span></th>\n";
print "<th width=10%><span class=post>敏捷：$ref</span></th>\n";
print "<th width=10%><span class=post>知性：$int</span></th>\n";
print "<th width=10%><span class=post>意思：$wil</span></th>\n";
print "<th width=10%><span class=post>社交：$soc</span></th></tr>\n";
print "<tr><th width=10% class=post>修正：+$str_n</th>\n";
print "<th width=10% class=post>修正：+$dex_n</th>\n";
print "<th width=10% class=post>修正：+$ref_n</th>\n";
print "<th width=10% class=post>修正：+$int_n</th>\n";
print "<th width=10% class=post>修正：+$wil_n</th>\n";
print "<th width=10% class=post>修正：+$soc_n</th></tr>\n";
print "</table>\n";
print "</td></tr>\n";
if ($photo eq '') { $photo = $JPG; }
print "<tr><td bgcolor=#c0c0c0 align=center valign=middle><img src=$photo></td>\n";
print "<td bgcolor=#c0c0c0>\n";
print "<table border=0 width=100%>\n";
print "<tr><th width=20% class=post>ＨＰ：$hp</th>\n";
print "<th width=20% class=post>ＭＰ：$mp</th>\n";
print "<th width=20% class=post>ＡＰ：$ap</th></tr>\n";
print "</table>\n";
print "生活レベル：$lifelebel　所持金：$purse<br>\n";
print "年齢：$age　　性別：$jender　　身長：".$heit."cm　　体重：".$weit."kg<br>\n";
print "瞳の色：$eyes　　髪の色：$hair　　肌の色：$skin　　誕生日：$birthday<br>\n";
print "出自：$origin　　経歴：$career　　邂逅：$encounter\n";
$story =~ s/\r/<br>/g;
print "<table border=0 width=100%>\n";
print "<p>ストーリー：$story</p>\n";
$log =~ s/\r/<br>/g;
print "<p>碑文字：$log</p>\n";
$evolution =~ s/\r/<br>/g;
print "<p>経験点消費：$exp<br>$evolution</p>\n";
$rev =~ s/\r/<br>/g;
print "<p>REV値：$exp<br>$rev</p>\n";
print "</table>\n";
print "</td></tr>\n";
print "<tr><td colspan=2 bgcolor=#d5d5d5>\n";
print "<table border=0 width=100%>\n";
$normalskill =~ s/\r/<br>/g;
print "<tr><td valign=top width=32% height=50%><span class=data>$normalskill</td>\n";
$superskill =~ s/\r/<br>/g;
print "<td rowspan=2 valign=top width=32%><span class=data>$superskill</td>\n";
$outfit =~ s/\r/<br>/g;
print "<td rowspan=2 valign=top width=36%><span class=data>$outfit</td></tr>\n";
$connection =~ s/\r/<br>/g;
print "<tr><td valign=top width=32% height=50%><span class=data>$connection</td></tr>\n";
print "</table>\n";
print "</td></tr>\n";
print "</table>\n";
print "<p align=left><a href=$DB?mode=profile_mode&number=$number>データベースに戻る</a></p>\n";
print "</body>\n</html>";
exit;
}
#----------------登録・編集（form_mode）--------------#
sub form_mode {
&htmlhead;
if ($P{mode} eq 'form_mode_edit') {
foreach $profile (@SLdat) {
($mark,$number,$date,$player,$name,$job,$class1,$class2,$class3,$str,$dex,$ref,$int,$wil,$soc,$str_n,$dex_n,$ref_n,$int_n,$wil_n,$soc_n,$hp,$mp,$ap,$photo,$story,$log,$rev,$lifelebel,$purse,$age,$jender,$heit,$weit,$eyes,$hair,$skin,$birthday,$origin,$career,$encounter,$normalskill,$superskill,$outfit,$connection,$evolution,$exp,$pass,)=split(/\,/,$profile);
if ($P{number} == $number) { last; }
}
}
if ($pass eq '') {$match = 1;}
elsif ($P{pass} eq $pass) {$match = 1;}
elsif ($P{pass} eq $master_pass) {$match = 1;}
else {$match = 0;}
if ($match == 1 ) {
print "<script language=JavaScript src=$JavaScript></script>\n";
print "<form name=form1 action=$DB method=POST>\n";
print "<input type=hidden name=mode value=input>\n";
print "<input type=hidden name=number value=$number>\n"; 
print "<table border=1 cellspacing=1 width=750>\n";
if ($P{mode} eq 'form_mode_edit') {
print "<tr><th colspan=3>ＡＢＯＵＴ　ＣＡＳＴ</th>\n";
print "<th><a href=$DB?mode=profile_mode&number=$number>キャラクター詳細画面に戻る</a></th></tr>\n";
} else {print "<tr><th colspan=4>ＡＢＯＵＴ　ＣＨＡＲＡＣＴＥＲ</th></tr>\n";}
print "<tr><th>name</th>\n";
print "<td colspan=3><input type=text size=50 name=name value=$name></td></tr>\n";
print "<tr><th>JOB&POST</th>\n";
print "<td colspan=3><input type=text size=50 name=job value=$job></td></tr>\n";
print "<tr><th>PLAYER</th>\n";
print "<td colspan=3><input type=text size=30 name=player value=$player></td></tr>\n";
print "<tr><th>CLASS</th>\n";
@st = ('−','アウトロウ','スリンガー','テクノロジスト','ネゴジエイター','エクスプローラー','コンポーザー','ブーステッドマン','エスパー','クリスタルシンガー','ブレインチップ','マーチャントプリンス','メトセラ','ワンダラー','テラナー','アップリフトアニマル','エルダー');

print '<td><select name=class1 size=1 onChange="calc()">';
foreach $select (@st) {
if ($class1 eq $select) {print "<option selected>$select</option>\n";}
else {print "<option>$select</option>\n";}
}
print "</select>\n";
print "</td>\n";

print '<td><select name=class2 size=1 onChange="calc()">';
foreach $select (@st) {
if ($class2 eq $select) {print "<option selected>$select</option>\n";}
else {print "<option>$select</option>\n";}
}
print "</select>\n";
print "</td>\n";

print '<td><select name=class3 size=1 onChange="calc()">';
foreach $select (@st) {
if ($class3 eq $select) {print "<option selected>$select</option>\n";}
else {print "<option>$select</option>\n";}
}
print "</select>\n";
print "</td></tr>\n";

print "<tr><th>能力値</th><td colspan=3>\n";
print "体力<input type=text size=2 name=str value=$str>";
print "器用<input type=text size=2 name=dex value=$dex>";
print "敏捷<input type=text size=2 name=ref value=$ref>";
print "知性<input type=text size=2 name=int value=$int>";
print "意思<input type=text size=2 name=wil value=$wil>";
print "社交<input type=text size=2 name=soc value=$soc>";
print "</td></tr>\n";
print "<tr><th>能力値修正</th><td colspan=3>\n";
print "体力<input type=text size=2 name=str_n value=$str_n>";
print "器用<input type=text size=2 name=dex_n value=$dex_n>";
print "敏捷<input type=text size=2 name=ref_n value=$ref_n>";
print "知性<input type=text size=2 name=int_n value=$int_n>";
print "意思<input type=text size=2 name=wil_n value=$wil_n>";
print "社交<input type=text size=2 name=soc_n value=$soc_n>";
print "</td></tr>\n";
print "<tr><th>PROFILE</th>\n";
print "<td colspan=4>PHOTO(url):<input type=text name=photo size=80 value=$photo><br>\n";
@lifelevel = ('-','貧乏','普通','裕福','華美');
print "生活レベル:<select name=lifelevel size=1>";
foreach $select (@lifelevel) {
if ($lifelevel eq $select) {print "<option selected>$select</option>\n";}
else {print "<option>$select</option>\n";}
}
print "</select>年齢:<input size=2 type=text name=aj value=$lifelebel,$purse,$age>";
@jd = ('−','♂','♀','？');
print "性別:<select name=jender size=1>";
foreach $select (@jd) {
if ($jender eq $select) { print "<option selected>$select</option>\n"; }
else { print "<option>$select</option>\n"; }
}
print "</select>身長:<input size=3 type=text name=heit value=$heit>cm\n";
print "体重:<input size=3 type=text name=weit value=$weit>kg\n";
print "瞳の色:<input size=3 type=text name=eyes value=$eyes>\n";
print "髪の色:<input size=3 type=text name=hair value=$hair>\n";
print "肌の色:<input size=3 type=text name=skin value=$skin>\n";
print "誕生日:<input size=4 type=text name=birthday value=$birthday>\n";
print "出自:<input size=4 type=text name=birthday value=$origin>\n";
print "経歴:<input size=4 type=text name=birthday value=$career>\n";
print "邂逅:<input size=4 type=text name=birthday value=$encounter>\n";
$story =~ s/<br>/\r/g;
print "<tr><th>STORY</th><td colspan=3>\n";
print "<textarea name=story rows=4 cols=80>$story</textarea></td></tr>\n";
$log =~ s/<br>/\r/g;
print "<tr><th>碑文字(terragram)</th><td colspan=3>\n";
print "<textarea name=log rows=4 cols=80>†地球†$log</textarea></td></tr>\n";
if ($evolution eq '') {
$evolution = '▼能力値上昇<br>▼技能修得<br>▼常備化';
}
$evolution =~ s/<br>/\r/g;
if ($exp eq'') {$exp = "0"};
print "<tr><th>EVOLUTION<br>&<br>EXP</th><td colspan=3>\n";
print "<textarea name=evolution rows=4 cols=80>$evolution</textarea>\n";
print "EXP:<input type=text size=3 name=exp value=$exp></td></tr>\n";
print "<tr><th>DATA<br>１●○○○<br>２●●○○<br>３●●●○<br>４●●●●</th>\n";
if ($normalskill eq '') {
$normalskill = "■体力ベース\r格闘\r白兵戦闘\rメディック\r１●○○○知覚\rアレンジ\r製作：\r心理\r芸術：\r霊感\r１○○●○アイデンティティ\rアスレチック\rヴィークル\rメレー\r回避\r隠密\r交渉\r１○○○●売買\r追跡\r\r１○○○●社会：Ｎ◎ＶＡ\r１○○●○社会：出身地\r\r１○○○○コネ：\r１○○○○コネ：\r１○○○○コネ：";
}
else {$normalskill =~ s/<br>/\r/g;}
print "<td>NomalSkillz　<input type=button value=MakeUp onClick=n_skill_makeup()>　<input type=button value=ListUp onClick=n_skill_listup()><br><textarea rows=18 cols=27 name=normalskill>$normalskill</textarea></td>\n";
$superskill =~ s/<br>/\r/g;
print "<td>SuperhumanSkillz　<input type=button value=ListUp onClick=s_skill_listup()><br><textarea rows=18 cols=27 name=superskill>$superskill</textarea></td>\n";
$outfit =~ s/<br>/\r/g;
print "<td>Outfitz　";
print "<input type=button value=MakeUp onClick=equip_makeup()>　";
print "<input type=button value=BuiltUp onClick=equip_buildup()>";
print "<br><textarea rows=18 cols=30 name=outfit>$outfit</textarea></td></tr>\n";
print "<tr><th colspan=5><input type=password name=pass size=10 value=$pass>";
print "<input type=submit value=登録></th></tr>\n";
print "</table></form>\n";
}
else {
print << "EOH";
<table border="0" width="760px">
<tr><td align="center" style="font-family:'ＭＳ Ｐゴシック';font-size:10pt;color:#c0c0c0;background-color:#ffffff">
<span class="name">パスワードエラー！！</span>
<p>パスワードが違います。<br>パスワードを忘れた場合管理人に相談してください。</p>
</td></tr></table>
EOH
}
&htmlfoot;
}
#----------------削除確認モード-------------------------#
sub del_mode{
&htmlhead;
foreach $profile (@SLdat) {
	($mark,$number,$date,$player,$name,$job,$class1,$class2,$class3,$str,$dex,$ref,$int,$wil,$soc,$str_n,$dex_n,$ref_n,$int_n,$wil_n,$soc_n,$hp,$mp,$ap,$photo,$story,$log,$rev,$lifelebel,$purse,$age,$jender,$heit,$weit,$eyes,$hair,$skin,$birthday,$origin,$career,$encounter,$normalskill,$superskill,$outfit,$connection,$evolution,$exp,$pass,)=split(/\,/,$profile);
	if ($P{number} == $number) { last; }
}
print "<table border=1>";
print "<tr><th>登録ナンバー</th><td>$number</td></tr>\n";
print "<tr><th>プレイヤー</th><td>$player</td></tr>\n";
print "<tr><th>名前</th><td>$name</td></tr>\n";
print "<tr><th>スタイル</th><td>$class1 $class2 $class3</td></tr>\n";
print "<tr><th>設定</th><td>$story</td></tr>\n";
print "</table>\n";
print" <br><br><p><b>このキャラクターのデータを削除します。<br>復旧はできませんがよろしいですか？</b></p>\n";
print "<form action=$DB method=POST>\n";
print "<input type=hidden name=mode value=del_input>\n";
print "<input type=hidden name=number value=$number>\n";
print "パスワード:<input type=password name=pass size=15>\n";
print "<input type=submit value=削除>\n";
&htmlfoot;
}
#----------------書きこみ処理-------------------------#
sub input{
($sec,$min,$hour,$mday,$month,$year,$wday) = localtime(time);
$year = sprintf("%02d", $year+1900);
$month = sprintf("%02d", $month+1);
$mday = sprintf("%02d", $mday);
$date_now = "$year/$month/$mday";

if ($P{number} ne '') {
	$splice_number = 0;
	foreach $input (@SLdat) {
		($mark,$number,$date,$player,$name,$job,$class1,$class2,$class3,$str,$dex,$ref,$int,$wil,$soc,$str_n,$dex_n,$ref_n,$int_n,$wil_n,$soc_n,$hp,$mp,$ap,$photo,$story,$log,$rev,$lifelebel,$purse,$age,$jender,$heit,$weit,$eyes,$hair,$skin,$birthday,$origin,$career,$encounter,$normalskill,$superskill,$outfit,$connection,$evolution,$exp,$pass,) = split(/\,/,$input);
		if ($P{number} == $number) {
			$input_value = "◆\,$P{number}\,$date_now\,$P{player}\,$P{name}\,$P{job}\,$P{class1}\,$P{class2}\,$P{class3}\,$P{persona}\,$P{key}\,$P{str}\,$P{str_c}\,$P{passion}\,$P{passion_c}\,$P{life}\,$P{life_c}\,$P{mundane}\,$P{mundane_c}\,$P{photo}\,$P{story}\,$P{id}\,$P{aj}\,$P{jender}\,$P{heit}\,$P{weit}\,$P{eyes}\,$P{hair}\,$P{skin}\,$P{birthday}\,$P{normalskill}\,$P{superskill}\,$P{outfit}\,$P{evolution}\,$P{exp}\,$P{pass}\,\n";
			splice (@SLdat, $splice_number, 1);
			unshift (@SLdat,$input_value);
			last;
		}
		$splice_number++;
	}
} 
else {
	$new_number = 1;
	for ($count = 1; $count <$#SLdat +2; $count++) {
		foreach $input (@SLdat) {
			($mark,$number,$date,$player,$name,$job,$class1,$class2,$class3,$str,$dex,$ref,$int,$wil,$soc,$str_n,$dex_n,$ref_n,$int_n,$wil_n,$soc_n,$hp,$mp,$ap,$photo,$story,$log,$rev,$lifelebel,$purse,$age,$jender,$heit,$weit,$eyes,$hair,$skin,$birthday,$origin,$career,$encounter,$normalskill,$superskill,$outfit,$connection,$evolution,$exp,$pass,) = split(/\,/,$input);
			if ($number == $new_number) {$new_number++;}
		}
	}
	$input_value = "◆\,$new_number\,$date_now\,$P{player}\,$P{name}\,$P{job}\,$P{class1}\,$P{class2}\,$P{class3}\,$P{persona}\,$P{key}\,$P{str}\,$P{ref}\,$P{passion}\,$P{passion_c}\,$P{life}\,$P{life_c}\,$P{mundane}\,$P{mundane_c}\,$P{photo}\,$P{story}\,$P{id}\,$P{aj}\,$P{jender}\,$P{heit}\,$P{weit}\,$P{eyes}\,$P{hair}\,$P{skin}\,$P{birthday}\,$P{normalskill}\,$P{superskill}\,$P{outfit}\,$P{evolution}\,$P{exp}\,$P{pass}\,\n";
	unshift (@SLdat,$input_value);
}
open (SL,">SL.dat")|| die "オープンエラー:$!";
print SL @SLdat;
close(SL);
undef $input_value;
undef $posted;
&view_mode;
}
#----------------削除処理-------------------------#
sub del_input {
foreach $profile (@SLdat) {
	($mark,$number,$date,$player,$name,$job,$class1,$class2,$class3,$str,$dex,$ref,$int,$wil,$soc,$str_n,$dex_n,$ref_n,$int_n,$wil_n,$soc_n,$hp,$mp,$ap,$photo,$story,$log,$rev,$lifelebel,$purse,$age,$jender,$heit,$weit,$eyes,$hair,$skin,$birthday,$origin,$career,$encounter,$normalskill,$superskill,$outfit,$connection,$evolution,$exp,$pass,)=split(/\,/,$profile);
	if ($P{number} == $number) { last; }
}
if ($pass eq '') {$match = 1;}
elsif ($P{pass} eq $pass) {$match = 1;}
elsif ($P{pass} eq $master_pass) {$match = 1;}
else {$match = 0;}

if ($match == 1 ) {
	$splice_number = 0;
	foreach $input (@SLdat) {
		($mark,$number,$date,$player,$name,$job,$class1,$class2,$class3,$str,$dex,$ref,$int,$wil,$soc,$str_n,$dex_n,$ref_n,$int_n,$wil_n,$soc_n,$hp,$mp,$ap,$photo,$story,$log,$rev,$lifelebel,$purse,$age,$jender,$heit,$weit,$eyes,$hair,$skin,$birthday,$origin,$career,$encounter,$normalskill,$superskill,$outfit,$connection,$evolution,$exp,$pass,) = split(/\,/,$input);
		if ($P{number} == $number) {
			splice (@SLdat, $splice_number, 1);
			open (SL,">SL.dat")|| die "オープンエラー:$!";
			print SL @SLdat;
			close(SL);
			last;
		}
	$splice_number++;
	}
} 
else {
	&htmlhead;
	print "<table border=0 width=760px>\n";
	print "<tr><td align=center>\n";
	print "<span style=font-family:'ＭＳ Ｐゴシック';font-size:13pt;color:#000000;>パスワードエラー！！</span>\n";
	print "<p>パスワードが違います。<br>パスワードを忘れた場合管理人に相談してください。</p>\n";
	print "</td></tr></table>\n";
	&htmlfoot;
}
&view_mode;
}
#----------------ＨＴＭＬヘッド-----------------------#
sub htmlhead {
print "Content-type: text/html\n\n";
print << "EOH";
<html>
<head>
<title>Ｎ◎ＶＡキャラデータベース</title>
<META name="robots" content="noindex">
<meta http-equiv="Content-Type" content="text/html; charset=x-sjis">
<style type="text/css">
<!--
td{font-family:'ＭＳ Ｐゴシック';font-size:10pt;color:#000000;background-color:#e0e0f0;padding:1pt;line-height:13pt;}
th{font-family:'ＭＳ Ｐゴシック';font-size:10pt;color:#000000;background-color:#aaaaee;padding:1pt;line-height:13pt;text-align:center;font-weight:bold;}
A:link{font-family:'ＭＳ Ｐゴシック';font-size:11pt;font-weight:bold;color:#0000FF;}
A:visited{font-family:'ＭＳ Ｐゴシック';font-size:11pt;font-weight:bold;color:#0000CC;}
.post{font-family:'ＭＳ Ｐゴシック';font-size:9pt;color:#000000;}
.date{font-family:'ＭＳ Ｐゴシック';font-size:9pt;color:#999999;}
.name{font-family:'ＭＳ Ｐゴシック';font-size:11pt;color:#000000;font-weight:bold;}
.data{font-family:'ＭＳ Ｐゴシック';font-size:9pt;color:#000000;}
-->
</style>
</head>
<body bgcolor="#ffffff" text="#000000" link="#0000aa" vlink="#00006a" alink="#30c030">
<div align="center">
<table width="760px" border="1">
<tr><th colspan="3"><span class="name">Ｎ◎ＶＡキャラデータベース</span></th></tr>
<tr>
<td><a href="$DB?mode=view_mode">キャラ一覧（初期画面）</a></td>
<td><a href="$DB?mode=form_mode_new">新規キャラ登録</a></td>
<td><a href="$homepage">親サイト</a></td>
</tr>
<tr>
<td align=right><form action="$DB" method="POST">
<input type="hidden" name="mode" value="search_mode">
<input type="text" name="keyword" size="14" value="$P{keyword}">
<input type="submit" value="キーワード検索">
</td></form>
<td align=right><form action="$DB" method="POST">
<input type="hidden" name="mode" value="search_mode">
<input type="text" name="s_player" size="14" value="$P{s_player}">
<input type="submit" value="プレイヤー検索">
</td></form>
<td align=right><form action="$DB" method="POST">
<input type="hidden" name="mode" value="search_mode">
EOH
@st = ('','アウトロウ','スリンガー','テクノロジスト','ネゴジエイター','エクスプローラー','コンポーザー','ブーステッドマン','エスパー','クリスタルシンガー','ブレインチップ','マーチャントプリンス','メトセラ','ワンダラー','テラナー','アップリフトアニマル','エルダー');
print "<select name=s_style>\n";
foreach $select (@st) {
if ($P{s_style} eq $select) {print "<option selected>$select</option>\n";}
else {print "<option>$select</option>\n";}
}
print << "EOH";
<input type="submit" value="スタイル検索">
</td></form>
</tr>
</table><br>
EOH
}
#----------------ＨＴＭＬフット-----------------------#
sub htmlfoot {
print << "EOH";
<p><br>
<table border="0" width="760">
<tr><td align="right" style="font-family:'ＭＳ Ｐゴシック';font-size:10pt;color:#c0c0c0;background-color:#ffffff">
composed by <a href="http://www.aurora.dti.ne.jp/~motacila/gospel/">ガニメデつちのこ</a><br>
「トーキョーＮ◎ＶＡ The Revolution」「トータルエクリプス」「グランドクロス」「ナイフエッジ」「ＳＳＳ」「ゲーマーズ・フィールド誌」は<br>
<a href="http://www.fear.co.jp/">有限会社ファーイースト・アミューズメント・リサーチ及び有限会社ゲーム・フィールド</a>の著作物です。</td></tr>
</table>
</p>
</div>
</body>
</html>
EOH
exit;
}
#-----------------------------------------------------#
