#!/usr/bin/perl

require 'jcode.pl';

#------------------------------------
$ver="UNSEI-i v1.3";#(i-mode向け占い)
#------------------------------------
# Copyright(C) りゅういち
# E-Mail:ryu@cj-c.com
# W W W :http://www.cj-c.com/
#------------------------------------

#-- 初期設定など ---------------*
$met    ="POST";		# データの受け渡し(GET or POST/J-SKYだと自動的にGETになります)
$backurl="../index.html";		# 戻るURL
$pas   = "6622";		# 削除/コメント追加パス(半角英数)
$title = "簡単お料理占い";	# タイトル
$body  = '<body>';		# BODYタグ カラー対応にする場合 text など設定
$cgi_f=  "ui.cgi";		# メインプログラム
$log[0]= "i.log";		# 記録ファイル(ラッキーアイテムログ)
$log[1]= "c.log";		# 記録ファイル(ラッキーカラーログ)
$log[2]= "h.log";		# 記録ファイル(ラッキーヒューマンログ)
$log[3]= "u.log";		# 記録ファイル(運勢ログ)
$max_n=  16;			# 入力名前の限度(初期/半角16字-全角8字)

# トップのコメント(タグ可)
$topcom=<<"_TCOM_";

<div align="center">好きな言葉で<br>
<div align="center">運勢を大胆予\測!<br>

_TCOM_
# ↑ これは削除不可
$access= 0;			# アクセス対象は?
# (0=とくに無し 1=J-SKYのみ 2=i-modeのみ 3=ドットiのみ 4=対応携帯端末すべて 5=ezweb(簡易対応))

#-- ここまで -------------------*
$j_=0; $i_=0; $a_=0; $e_=0;
$Imode=$ENV{'HTTP_USER_AGENT'};
$Jskyw=$ENV{'HTTP_X_JPHONE_MSNAME'};
if($Jskyw ne ""){$j_=1;}
if($Imode=~ /DoCoMo/){$i_=1;}
elsif($Imode=~ /J-PHONE\/2/){$j_=1;}
elsif($Imode=~ /J-PHONE\/[3-9]/){$j_=2;}
elsif($Imode=~ /ASTEL/){$a_=1;}
elsif(index($Imode,"UP.Browser")==0){$e_=1;}
elsif(index($Imode,"UP.Browser") > 0){$e_=2;}
if($j_ || $i_ || $a_ || $e_){$PC=0;}else{$PC=1;}
if($j_==1){$met="GET";}
if($j){$MAX=" maxlength=50";}else{$MAX="";}
$html="";
&d_code_;
if($mode eq "wri"){&wri_;}
if($mode eq "new"){&new_;}
if($mode eq "ent"){&ent_;}
if($mode eq "log"){&log_;}
if($mode eq "cas"){&cas_;}
if($mode eq "edit"){&ed_;}
if($mode eq "del"){&del_;}
if($access){
	if($access==1 && $j_==0){&er_("J-Sky端末でｱｸｾｽして下さい!");}
	elsif($access==2 && $i_==0){&er_("i-mode端末でｱｸｾｽして下さい!");}
	elsif($access==3 && $a_==0){&er_("ﾄﾞｯﾄi端末でｱｸｾｽして下さい!");}
	elsif($access==5 && $e_==0){&er_("ezweb端末でｱｸｾｽして下さい!");}
	elsif($access==4 && $a_==0 && $i_==0 && $j_==0 && $e_==0){
		&er_("i-mode/J-Sky/ﾄﾞｯﾄi/ezweb端末でｱｸｾｽして下さい!");
	}
}
&html_;
#
# [トップページ]
#
sub html_ {
&hed_;
$html.= "<center>\n";
$html.= "$title\n";
$html.= <<"_TOP_";
</center><hr>$topcom<hr>
<center>
<body bgcolor="#ffffff" link="orange" vlink="orange"><!--#exec cgi="http://recipe.st555.net/ad_rot/ad.cgi" -->
<form action=$cgi_f method="$met">
<input type=hidden name=mode value=wri>
好きな言葉を入れてね<br>
<input type=text name=name size=10 maxlength=$max_n>
<input type=submit value="占う"><br>
</form>
<br>[<a href="$backurl">戻</a>]
</center><br>
<form action=$cgi_f method=$met>
<input type=hidden name=mode value=edit>
<input type=password name=pass size=6>
<input type=submit value="管理">
</form></div>
_TOP_
&foot_;
}
#
# [コメント追加削除]
#
sub ent_ {
if($pass ne "$pas"){ &er_("パスワードが違います!"); }
&hed_;
$html.= <<"_OTHER_";
<a href="$cgi_f?mode=edit&pass=$pass">戻</a>
<br>-ｺﾒﾝﾄ追加削除-<hr>
<form action="$cgi_f" method=$met>
<input type=hidden name=pass value=$pass>
項目をｾﾚｸﾄ<br>
<input type=radio name=logs value="$log[0]" checked>ﾗｯｷｰｱｲﾃﾑ<br>
<input type=radio name=logs value="$log[1]">ﾗｯｷｰｶﾗｰ<br>
<input type=radio name=logs value="$log[2]">ﾗｯｷｰﾋｭｰﾏﾝ<br>
<input type=radio name=logs value="$log[3]">運勢<hr>
<input type=radio name=mode value=cas checked>追加<br>
<input type=radio name=mode value=del>削除<hr>
<input type=submit value="送信"></form>
_OTHER_
&foot_;
}
#
# [追加フォーム]
#
sub cas_ {
if($pass ne "$pas"){ &er_("パスワードが違います!"); }
&hed_;
$html.= <<"_FORM_";
<a href=$cgi_f>TOP</a>/<a href="$cgi_f?mode=ent&pass=$pass">項目選択</a><br>
-ｺﾒﾝﾄ追加-<hr>
_FORM_
open(LOG,"$logs") || &er_("Can't open $logs");
$UP[0] = <LOG>;
close(LOG);
if($logs eq $log[0]){$html.="-ﾗｯｷｰｱｲﾃﾑ-<br>(物質名)<br><br>\n";}
elsif($logs eq $log[1]){$html.="-ﾗｯｷｰｶﾗｰ-<br>(色名)<br><br>\n"; $ccc="色";}
elsif($logs eq $log[2]){$html.="-ﾗｯｷｰﾋｭｰﾏﾝ-<br>(人)<br><br>\n";}
elsif($logs eq $log[3]){$html.="-運勢-<br>(運勢)<br><br>\n";}
$html.= <<"_FORM_";
例：$UP[0]<br>
<form action=$cgi_f method=$met>
<input type=hidden name=mode value=log>
<input type=hidden name=logs value="$logs">
<input type=hidden name=pass value="$pass">
ｺﾒﾝﾄ<input type=text name=com size=10$MAX>$ccc<br>
<input type=submit value="追加"><br>
</form>
_FORM_
&foot_;
}
#
# [コメントをログに]
#
sub log_ {
if($pass ne "$pas"){ &er_("パスワードが違います!"); }
if($com eq ""){ &er_("コメントが未入力！"); }
if(length($com) > 16){ &er_("コメントがながすぎ！"); }

open(DB,"$logs") || &er_("Can't open $logs");
@LOGS = <DB>;
close(DB);
foreach $LOGS (@LOGS) {
	$LOGS =~ s/\n//g;
	if ($com eq "$LOGS"){ &er_("同じのがもうある！"); }
}

open(LOG,">>$logs") || &er_("Can't write $logs");
print LOG "$com\n";
close(LOG);
&hed_;
$html.= <<"_OK_";
<a href=$cgi_f>TOP</a>/<a href="$cgi_f?mode=ent&pass=$pas">項目選択</a><br>
-ｺﾒﾝﾄ追加-
<hr width=90\%>
$com を追加しました。
_OK_
&foot_;
}
#
# [管理用]
#
sub ed_ {
if($pass ne "$pas"){ &er_("パスワードが違います!"); }
$com_size=(-s $log[0]) + (-s $log[1]) + (-s $log[2]) + (-s $log[3]);
&hed_;
$html.= <<"_EDIT_";
<center>
-管理用-
<hr width=90\%>
ﾛｸﾞｻｲｽﾞ/$com_sizeﾊﾞｲﾄ<br>
<br>
<a href=$cgi_f>TOP</a>/<a href="$cgi_f?mode=ent&pass=$pass">ｺﾒﾝﾄ追加削除</a>
_EDIT_
&foot_;
}
#
# [フォームデコード]
#
sub d_code_ {
if ($ENV{'REQUEST_METHOD'} eq "POST") {read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});}
else { $buffer = $ENV{'QUERY_STRING'}; }

@pairs = split(/&/,$buffer);
foreach $pair (@pairs) {
	($name, $value) = split(/=/, $pair);
	$value =~ tr/+/ /;
	$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

	&jcode'convert(*value,'sjis');
	$value =~ s/</\&lt\;/g;
	$value =~ s/>/\&gt\;/g;
	$value =~ s/\"/\&quot\;/g;
	$FORM{$name} = $value;
	if($name eq 'del'){push(@d_,$value);}
}
$name = $FORM{'name'};
$mode = $FORM{'mode'};
$logs = $FORM{'logs'};
if($logs){
	$OK=0;
	foreach(0..$#log){if($logs eq $log[$_]){$OK=1; last;}}
	if($OK==0){&er_("そのログはありません!");}
}
$pass = $FORM{'pass'};
$com  = $FORM{'com'};
}
#
# [出来事記入]
#
sub wri_ {
if (length($name) > $max_n) { &er_("名前がながすぎ！"); }
if ($name eq "") { &er_("名前をいれて！"); }
open(LOG,"$log[0]") || &er_("Can't open $log[0]");
@LINE = <LOG>;
close(LOG);
srand;
$a=int(rand($#LINE));
$aa=$LINE[$a];

open(LOG,"$log[1]") || &er_("Can't open $log[1]");
@LINE1 = <LOG>;
close(LOG);
$b=int(rand($#LINE1));
$bb=$LINE1[$b];

open(LOG,"$log[2]") || &er_("Can't open $log[2]");
@LINE2 = <LOG>;
close(LOG);
$c=int(rand($#LINE2));
$cc=$LINE2[$c];

open(LOG,"$log[3]") || &er_("Can't open $log[3]");
@LINE3 = <LOG>;
close(LOG);
$d=int(rand($#LINE3));
$dd=$LINE3[$d];

$aa =~ s/\n//g;$bb =~ s/\n//g;$cc =~ s/\n//g;$dd =~ s/\n//g;

$ENV{'TZ'} = "JST-9";
($sec,$min,$hour,$mday,$mon,$year,$wday) = localtime(time);
$year=$year+1900;
$mon++;
if ($mon  < 10) { $mon  = "0$mon";  }
if ($mday < 10) { $mday = "0$mday"; }
$week = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat') [$wday];
$date = "$year\/$mon\/$mday\($week\)";

&new_;
exit;
}
#
# [出来事表示]
#
sub new_ {
&hed_;
$html.= <<"_NEWS_";
<body bgcolor="#ffffff" link="orange" vlink="orange"><!--#exec cgi="http://recipe.st555.net/ad_rot/ad.cgi" -->
$name<br>さんの運勢<br>
$date<center>
<hr width=90\%>
ﾗｯｷｰｱｲﾃﾑ<br>
$aa<br><br>
ﾗｯｷｰｶﾗｰ<br>
$bb色<br><br>
そんなあなたの<br>ｵｽｽﾒﾊﾟｰﾄﾅｰは<br>
$ccで<br><br>
結局運勢は<br>
$dd<br>といった感じです<br>
<form action=$cgi_f method="$met"><input type=hidden name=mode value=wri>
ｱﾅﾀﾉﾅﾏｴ<br>
<input type=text name=name size=10 maxlength=$max_n value="$name">
<br><input type=submit value="もう1度占う">
</form></center>[<a href="$backurl">戻</a>]
_NEWS_
&foot_;
}
#
# [ヘッダ表示]
#
sub hed_ {
$html.= <<"_HTML_";
<html><head><title>$title</title>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS">
</head><!--$ver-->
$body
_HTML_
}
#
# [フッタ表示]
#
sub foot_ {
$html.= <<"_HTML_";
<hr><!--著作権表\示 削除不可-->
<a href="http://www.cj-c.com/i/" terget=_top>UNSEI-i</a>
</body></html>
_HTML_
&htmlp;
}
sub er_ { #エラー処理
&hed_;
$html.= "[<a href=\"$cgi_f\">戻</a>]<center>ERROR!<br>$_[0]</center><br><br>\n";
&foot_;
}
#
# [コメント削除]
#
sub del_ {
if($pass ne "$pas"){ &er_("パスワードが違います!"); }
open(DB,"$logs") || &er_("Can't open $logs");
@LOGS = <DB>;
close(DB);
if(@d_){
	$F=0; @NEW=();
	foreach(0..$#LOGS){
		foreach $d_ (@d_){if($d_==$_){$F=1; last;}}
		if($F){$F=0; next;}
		push (@NEW,"$LOGS[$_]");
	}
	open (DB,">$logs");
	print DB @NEW;
	close(DB);
	@LOGS=@NEW;
}
&hed_;
$html.=<<"_HTML_";
<a href=$cgi_f>TOP</a>/<a href="$cgi_f?mode=ent&pass=$pass">項目選択</a><br>-ｺﾒﾝﾄ削除-<hr>
<form action="$cgi_f" method=$met>
<input type=hidden name=mode value=del><input type=hidden name=pass value=$pass>
<input type=hidden name=logs value=$logs>
_HTML_
foreach(0..$#LOGS){
	$LOGS[$_]=~ s/\n//g;
	$html.="<input type=checkbox name=del value=$_>$LOGS[$_]<br>\n";
}
$html.=<<"_HTML_";
<input type=submit value="ﾁｪｯｸ削除">
</form>
_HTML_
&foot_;
}
#
# [書き出し]
#
sub htmlp {
$len = length($html);
print "Content-type: text/html\n";
if($i_){print "Content-length: $len\n";}
print "\n";
print "$html";
exit;
}
