#!/usr/bin/perl

require 'jcode.pl';

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

#-- 初期設定など ---------------*
$met    ="POST";		# データの受け渡し(GET or POST/GETにするとJ-SKYでも動きます)
$backurl="http://nandemo.com/i/imode.html";		# 戻るURL※変更必須
$pas   = "0223";		# 削除/コメント追加パス(半角英数)※変更必須
$title = "今日のあなた";	# タイトル
$body  = '<body>';		# BODYタグ カラー対応にする場合 text など設定
$cgi_f=  "ui.cgi";		# メインプログラム
$log[0]= "i-taro.log";		# 記録ファイル(占断内容)
$max_n=  16;			# 入力名前の限度(初期/半角16字-全角8字)

# トップのコメント(タグ可)
$topcom=<<"_TCOM_";
_TCOM_
# ↑ これは削除不可
$access= 0;			# アクセス対象は?
				# (0=とくに無し 1=J-SKYのみ 2=i-modeのみ 3=J-SKY及びi-modeのみ)
#-- ここまで -------------------*
if($access){
$j_=0;$i_=0;
$Imode=$ENV{'HTTP_USER_AGENT'};
if($Imode =~ /DoCoMo/){$i_=1;}
$Jskyw=$ENV{'HTTP_X_JPHONE_MSNAME'};
if($Jskyw ne ""){$j_=1;}
if($access==1 && $j_==0){&er_("J-SKY端末でｱｸｾｽして下さい!");}
elsif($access==2 && $i_==0){&er_("i-mode端末でｱｸｾｽして下さい!");}
elsif($access==3 && $j_==0 && $i_==0){&er_("i-modeもしくはJ-SKY端末でｱｸｾｽして下さい!");}
}
$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_;}
&html_;
#
# [トップページ]
#
sub html_ {
&hed_;
$html.= "<center>\n";
$html.= "$title\n";
$html.= <<"_TOP_";
</center><hr>$topcom<hr>
<center>
<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></div>
_TOP_
&foot_;
}
#
# [コメント追加]
#
sub ent_ {
	if($pass ne "$pas"){ &er_("パスワードが違います!"); }
&hed_;
$html.= <<"_OTHER_";
<a href="$cgi_f?mode=edit&pass=$pass">BACK</a>
<br>-ｺﾒﾝﾄ追加-
<hr width=90\%>
<form action="$cgi_f" method=$met>
<input type=hidden name=mode value=cas>
<input type=hidden name=pass value=$pass>
<br>
占断内容<input type=radio name=logs value="$log[0]" checked><br>
<input type=submit value="追加する"></form>
_OTHER_
&foot_;
}
#
# [追加フォーム]
#
sub cas_ {
&hed_;
$html.= <<"_FORM_";
<a href=$cgi_f>TOP</a>/<a href="$cgi_f?mode=ent&pass=$pass">項目選択</a><br>
-ｺﾒﾝﾄ追加-
<hr width=90\%>
_FORM_
open(LOG,"$logs") || &er_("Can't open $logs");
$UP[0] = <LOG>;
close(LOG);
if($logs eq $log[0]){
$html.="占断内容<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=text name=com size=10 maxlength=16>$ccc<br>
<input type=submit value="追加"><br>
</form>
_FORM_
&foot_;
}
#
# [コメントをログに]
#
sub log_ {
if($com eq ""){ &er_("コメントが未入力！"); }
if(length($com) > 1000){ &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]);
if($com){
open(DB,"$logs") || &er_("Can't open $logs");
@COMS = <DB>;
close(DB);
@CAS = ();
foreach $COMS (@COMS) {
	$COMS =~ s/\n//g;
if($logs eq $n_log){
($time,$n,$a,$b,$c,$d) = split(/<>/,$COMS);
	if ("$com" eq "$time") {$COMS = "";}
}else{
	if ("$com" eq "$COMS") {$COMS = "";}
}
if($COMS eq ""){ $n=""; }else{ $n="\n"; }
push (@CAS,"$COMS$n");
}
open (DB,">$logs");
print DB @CAS;
close(DB);
}
&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;
	}
$name = $FORM{'name'};
$mode = $FORM{'mode'};
$logs = $FORM{'logs'};
$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];

$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_";
<center>
			$name<br>
			さんの運勢<br>
			$date
			<p>
			<hr width="90%">
			<br>
			$aa<br>
			<br>
			<br>
			<br>
			<p>[<a href="$backurl">戻</a>]</center>
_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><!--著作権表\示 削除不可-->
_HTML_
	$html.= "</body></html>\n";
	&htmlp;
}
sub er_ { #エラー処理
	&hed_;
	$html.= "[<a href=\"$cgi_f\">戻</a>]<center>ERROR!<br>$_[0]</center><br><br>\n";
	&foot_;
}
#
# [書き出し]
#
sub htmlp {
$len = length($html);
print "Content-type: text/html\n";
if($i_){print "Content-length: $len\n";}
print "\n";
print "$html";
exit;
}
