#!c:/perl/bin/perl
$CHARSET='Shift_JIS';
$CsvCity='./city.csv';
$CsvItem='./item.csv';
$CsvCulture='./culture.csv';
$CsvMain='./main.csv';
$CssDesign='./design.css';
$CgiMain='./main.cgi';
loadFormdata();
loadCsvfile();
if($FORM{'from'} eq 'item'){
processPI();
printInput();
}else{
writeData();
printBackpage();
}
exit;
sub loadFormdata
{
my ($query, $pair, @pairs);
if($ENV{'REQUEST_METHOD'} eq 'POST') {
read(STDIN, $query, $ENV{'CONTENT_LENGTH'});
}
else {
$query = $ENV{'QUERY_STRING'};
}
@pairs = split(/&/, $query);
foreach $pair (@pairs) {
my ($key, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/chr(hex($1))/eg;
$FORM{$key} = $value;
}
}
sub loadCsvfile
{
open(FileCity,"<$CsvCity") or printErrorpage("Cityデータファイルが開けません");
eval{flock(FileCity,1)};
@DataCity=<FileCity>;
close FileCity;
open(FileItem,"<$CsvItem") or printErrorpage("Itemデータファイルが開けません");
eval{flock(FileItem,1)};
@DataItem=<FileItem>;
close FileItem;
open(FileCulture,"<$CsvCulture") or printErrorpage("Cultureデータファイルが開けません");
eval{flock(FileCulture,1)};
@DataCulture=<FileCulture>;
close FileCulture;
open(FileMain,"<$CsvMain") or printErrorpage("Mainデータファイルが開けません");
eval{flock(FileMain,1)};
@DataMain=<FileMain>;
close FileMain;
}
sub processPI
{
my($i);
LOOPPPIITEM:for($i=0;$i<@DataItem;++$i){
my($diNumber,$diName,$diCategory,$diClass,$diCulture,$diPrice)=split(/,/,$DataItem[$i]);
if($diNumber==$FORM{'item'}){
$GlItem{'name'}=$diName;
last LOOPPPIITEM;
}
}
LOOPPPICITY:for($i=0;$i<@DataCity;++$i){
my($dcNumber,$dcName,$dcCulture,$dcAlliance)=split(/,/,$DataCity[$i]);
if($dcNumber==$FORM{'city'}){
$GlCity{'name'}=$dcName;
last LOOPPPICITY;
}
}
}
sub printInput
{
print qq(Content-type: text/plain; charset=$CHARSET\n\n);
print qq(<HTML><HEAD>\n);
print qq(<TITLE>NFT:INPUT</TITLE>\n);
print qq(<LINK REL="stylesheet" HREF="$CssDesign" TYPE="text/css">);
print qq(</HEAD><BODY>\n);
print qq(<FORM ACTION="./input.cgi" METHOD="POST">\n);
print qq(<INPUT TYPE="hidden" name="from" value="input">\n);
print qq(<INPUT TYPE="radio" name="direct" value="0" CHECKED>売/);
print qq(<INPUT TYPE="radio" name="direct" value="1">買<BR>\n);
print qq(都市:$GlCity{'name'}<INPUT TYPE="hidden" name="city" value="$FORM{'city'}"><BR>\n);
print qq(交易品:$GlItem{'name'}<INPUT TYPE="hidden" name="item" value="$FORM{'item'}"><BR>\n);
print qq(価格<INPUT TYPE="text" name="price" value="." size="10"><BR>\n);
print qq(仕入価格<INPUT TYPE="text" name="purchase" value="." size="10"><BR>\n);
print qq(相場<INPUT TYPE="text" name="market" value="." size="10">%<BR>\n);
print qq(税率<INPUT TYPE="text" name="tax" value="." size="10">%<BR>\n);
print qq(<INPUT TYPE="submit" VALUE="データ登録"></FORM>\n);
print qq(</BODY></HTML>);
}
sub pickupTime
{
my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
my $yyyy=$year+1900;
my $mm=$mon+1;
my $dd=$mday;
if($mm<10){$mm='0'.$mm;}
if($dd<10){$dd='0'.$dd;}
$FORM{'update'}=($yyyy.'-'.$mm.'-'.$dd);
}
sub writeData
{
pickupTime();
my($dmNumber,$dmUpdate,$dmCity,$dmItem,$dmDirect,$dmPrice,$dmMarket,$dmPurchase,$dmTax)=split(/,/,$DataMain[$#DataMain]);
$FORM{'number'}=$dmNumber+1;
//ロレンソ修正箇所スタート
$kaigyou="",
$kaigyou =~ s/\n//;
push(@DataMain,($FORM{'number'}.','.$FORM{'update'}.','.$FORM{'city'}.','.$FORM{'item'}.','.$FORM{'direct'}.','.$FORM{'price'}.','.$FORM{'market'}.','.$FORM{'purchase'}.','.$FORM{'tax'}.','.$kaigyou));
//ロレンソ修正箇所終わり
open(FileMain,">$CsvMain") or printErrorpage("Mainデータファイルが開けません");
eval{flock(FileMain,2)};
print FileMain @DataMain;
close FileMain;
}
sub printBackpage
{
print qq(Content-type: text/html; charset=$CHARSET\n\n);
print qq(<HTML><HEAD>\n);
print qq(<META HTTP-EQUIV="refresh" CONTENT="1;URL=$CgiMain?item=$FORM{'item'}">);
print qq(<TITLE>NFT:データ入力終了</TITLE></HEAD><BODY>\n);
print qq(1秒後に戻ります。<BR>\n);
print qq(<A HREF="$CgiMain?item=$FORM{'item'}">戻る</A></BODY></HTML>)
}
sub printErrorpage
{
print qq(Content-type: text/html; charset=$CHARSET\n\n);
print qq(<HTML><HEAD><TITLE>NFT:Error</TITLE></HEAD>);
print qq(<BODY>エラー:$_[0]</BODY></HTML>);
exit;
}
最終更新:2007年08月05日 18:04