www.pudn.com > NETv2.0.rar > new_chara.pl


#_/_/_/_/_/_/_/_/_/_/_/_/# 
#        NEW_CHARA       # 
#_/_/_/_/_/_/_/_/_/_/_/_/# 
 
sub NEW_CHARA { 
 
	if($CHARA_STOP){ &ERR2("注册成功"); } 
	if ($in{'id'} =~ m/[^0-9a-zA-Z]/) {&E_ERR("ID 在一半角英国数字以外的包含文字."); } 
	if ($in{'pass'} =~ m/[^0-9a-zA-Z]/) {&E_ERR("密码在一半角英国数字以外的包含文字."); } 
	if ($in{'mail'} =~ /yahoo/ || $in{'mail'} =~ /hotmail/) {&E_ERR("邮箱不对."); } 
	if ($in{'mail'} eq "" || $in{'mail'} !~ /(.*)\@(.*)\.(.*)/){&E_ERR("邮箱不正确.");} 
	if($in{'id'} eq "" or length($in{'id'}) < 4 or length($in{'id'}) > 8) { &E_ERR("ID,请用 4 文字以上,8 文字以下输入."); } 
	elsif($in{'pass'} eq "" || length($in{'pass'}) < 4 || length($in{'pass'}) > 8) { &E_ERR("密码,请用 4 文字以上,8 文字以下输入."); } 
	elsif($in{'con'} eq "") { &E_ERR("没有选择初期位置."); } 
	elsif($in{'mail'} eq "\@" || $in{'mail'} eq "") { &E_ERR("邮箱不对."); } 
	elsif($in{'pass'} eq "" || length($in{'pass'}) < 4 || length($in{'pass'}) > 16) { &E_ERR("密码输入不正确"); } 
	elsif($in{'chara_name'} eq "" || length($in{'chara_name'}) < 4 || length($in{'chara_name'}) > 12) { &E_ERR("没有正确输入名字"); } 
	elsif($in{'mes'} eq "" || length($in{'mes'}) < 4 || length($in{'mes'}) > 48) { &E_ERR("不被加入,错误."); } 
	elsif($in{'id'} eq $in{'pass'}){&E_ERR("ID或密码相同,不能注册."); } 
 
	if ($in{'str'} =~ m/[^0-9]/){&E_ERR("能力值输入不正确"); } 
	if($in{'str'} eq "" || $in{'str'} < 5 || $in{'str'} > 100){&E_ERR("请好好看能力范围");} 
 
	if ($in{'int'} =~ m/[^0-9]/){&E_ERR("智力值输入不正确"); } 
	if($in{'int'} eq "" || $in{'int'} < 5 || $in{'int'} > 100){&E_ERR("请好好看能力范围");} 
	if ($in{'tou'} =~ m/[^0-9]/){&E_ERR("统率力值输入不正确"); } 
	if($in{'tou'} eq "" || $in{'tou'} < 5 || $in{'tou'} > 100){&E_ERR("请好好看能力范围");} 
	$max = $in{'str'} + $in{'int'} + $in{'tou'}; 
	if($max ne "150"){ 
		&E_ERR("\能力\输入不正确($max)"); 
	} 
	open(IN,"$TOWN_LIST") or &ERR("不会打开被指定的文件夹."); 
	@TOWN_DATA = ; 
	close(IN); 
 
	open(IN,"$COUNTRY_LIST") or &ERR2('不会打开被指定的文件夹.err no :country'); 
	@COU_DATA = ; 
	close(IN); 
 
	open(IN,"$COUNTRY_NO_LIST") or &ERR2('不会打开被指定的文件夹.err no :country no'); 
	@COU_NO_DATA = ; 
	close(IN); 
 
	$zc=0;$m_hit=0; 
	($z2name,$z2con)=split(/<>/,$TOWN_DATA[$in{'con'}]); 
	if($z2con eq ""){ 
		if($in{'ele'} eq ""){ 
			&E_ERR("国家颜色"); 
		}elsif($in{'cou_name'} eq "" || length($in{'cou_name'}) < 2 || length($in{'cou_name'}) > 8) { &E_ERR("没在正确被输入国家的名字."); } 
		$m_hit = 1; 
		$cou_name = $in{'cou_name'}; 
		$new_cou_no = @COU_NO_DATA + 1; 
		$hit = 1; 
	}else{ 
		foreach(@COU_DATA){ 
			($xcid,$xname,$xele,$xmark,$xking,$xmes,$xsub,$xpri)=split(/<>/); 
			if($xcid eq $z2con){ 
				$cou_name = $xname; 
				$kcon = $xcid; 
				$hit = 1; 
			} 
		} 
	} 
 
	if(!$hit){ 
		&E_ERR("国家存在."); 
	} 
 
	if($lockkey) { &F_LOCK; } 
 
	&SET_COOKIE; 
	&HOST_NAME; 
 
	$date = time(); 
	$pos = 2; 
	open(IN,"./charalog/main/$in{'id'}.cgi"); 
	@NEWCHARA = ; 
	close(IN); 
 
	$dir="./charalog/main"; 
	opendir(dirlist,"$dir"); 
	while($file = readdir(dirlist)){ 
		if($file =~ /\.cgi/i){ 
			if(!open(page,"$dir/$file")){ 
				&E_ERR("文件错误"); 
			} 
			@page = ; 
			close(page); 
			push(@REGIST_VI,"@page
"); } } closedir(dirlist); $hit=0;@new_chara=(); ($rkid,$rkpass,$rkname,$rkchara,$rkstr,$rkint,$rklea,$rkcha,$rksol,$rkgat,$rkcon,$rkgold,$rkrice,$rkcex,$rkclass,$rkarm,$rkbook,$rkbank,$rksub1,$rksub2,$rkpos,$rkmes,$rkhost,$rkdate,$rkmail,$rkos) = split(/<>/,$NEWCHARA[0]); if($rkid eq "$in{'id'}") {&E_ERR("ID问题");} if($REFREE){ if($ENV{'HTTP_REFERER'} ne "$SANGOKU_URL/$FILE_ENTRY" && $ENV{'HTTP_REFERER'} ne "$SANGOKU_URL/$FILE_TOP" && $ENV{'HTTP_REFERER'} ne "$SANGOKU_URL/"){ &E_ERR("ERR No.001
人物不对
和管理员联系.
P1:$ROSER_URL/$FILE_ENTRY
P2$ENV{'HTTP_REFERER'}"); } } foreach(@REGIST_VI){ ($rkid,$rkpass,$rkname,$rkchara,$rkstr,$rkint,$rklea,$rkcha,$rksol,$rkgat,$rkcon,$rkgold,$rkrice,$rkcex,$rkclass,$rkarm,$rkbook,$rkbank,$rksub1,$rksub2,$rkpos,$rkmes,$rkhost,$rkdate,$rkmail,$rkos) = split(/<>/); if($ACCESS){ if($host eq $rkhost ){ &E_ERR("IP相同的人在登记."); } } if($rkname eq "$in{'chara_name'}"){ &E_ERR("名字正被注册"); } if($rkmail eq "$in{'mail'}"){ &E_ERR("邮箱被注册."); } } if($m_hit){ $kcon = $new_cou_no; $month_read = "./log_file/date_count.cgi"; open(IN,"$month_read") or &ERR2('打不开文件.'); @MONTH_DATA = ; close(IN); ($myear,$mmonth,$mtime) = split(/<>/,$MONTH_DATA[0]); $old_date = sprintf("%02d\年%02d\月", $F_YEAR+$myear, $mmonth); push(@COU_DATA,"$new_cou_no<>$in{'cou_name'}<>$in{'ele'}<>1<>$in{'id'}<><>$in{'chara_name'}<>1<>\n"); open(OUT,">$COUNTRY_LIST") or &ERR('不被写入 COUNTRY 资料'); print OUT @COU_DATA; close(OUT); push(@COU_NO_DATA,"$new_cou_no<>$in{'cou_name'}<>$in{'ele'}<>1<>$in{'id'}<><>$in{'chara_name'}<>1<>\n"); open(OUT,">$COUNTRY_NO_LIST") or &ERR('不被写入 COUNTRY 资料'); print OUT @COU_NO_DATA; close(OUT); &TOWN_DATA_OPEN("$in{'con'}"); $zcon = $new_cou_no; &TOWN_DATA_INPUT; &MAP_LOG2("【建国】\[$old_date\]新的$in{'chara_name'}国家$cou_name注册"); &MAP_LOG("【建国】新的$in{'chara_name'}国家$cou_name注册"); }else{ &MAP_LOG("\[仕官\]新的$in{'chara_name'}国家$cou_name做官."); } @NEW_COM=(); for($i=0;$i<$MAX_COM;$i++){ push(@NEW_COM,"<><><>$tt<><><>50<>\n"); } open(OUT,">./charalog/command/$in{'id'}.cgi"); print OUT @NEW_COM; close(OUT); if($ATTESTATION){ &mail_to; $os = 0; }else{ $os = 1; } $kcha = int(rand(101)); $ksol = 0; $kgat = 0; $kgold = 1000; $krice = 500; $kcex = 0; $kclass = 0; $karm = 0; $kbook = 0; $kbank = ""; $ksub1 = ""; $ksub2 = $DEL_TURN - 10; unshift(@new_chara,"$in{'id'}<>$in{'pass'}<>$in{'chara_name'}<>$in{'chara'}<>$in{'str'}<>$in{'int'}<>$in{'tou'}<>$kcha<>$ksol<>$kgat<>$kcon<>$kgold<>$krice<>$kcex<>$kclass<>$karm<>$kbook<>$kbank<>$ksub1<>$ksub2<>$in{'con'}<>$in{'mes'}<>$host<>$date<>$in{'mail'}<>$os<>\n"); open(OUT,">./charalog/main/$in{'id'}.cgi"); print OUT @new_chara; close(OUT); if (-d $lockfile) { &UNLOCK_FILE; } &DATA_SEND; exit; } #_/_/_/_/_/_/_/_/# # ERROR PRINT # #_/_/_/_/_/_/_/_/# sub E_ERR { &HEADER; if (-e $lockfile) { unlink($lockfile); } print "

ERROR !

\n"; print "

$_[0]\n"; print "

"; print "


\n\n"; exit; } #------------------# # 儊乕儖憲怣張棟 # #------------------# sub mail_to { $sendmail = '/usr/lib/sendmail'; unless (-e $sendmail) { &E_ERR("sendmail不正确"); } # 儊乕儖僞僀僩儖 $mail_sub = "注册完成通知"; &TIME_DATA; $a_pass = crypt("$in{'id'}", ms); # 儊乕儖杮暥 $mail_msg = <<"EOM"; $in{'chara_name'} 样 这次.$GAME_TITLE 成功注册. 请马上确认. 登记日期和时间:$daytime 名称:$host 加入人员名:$in{'chara_name'} E-MAIL:$in{'mail'} 地址:http://$in{'url'} ID:$in{'id'} 密码:$in{'pass'} 认证密码:$a_pass 认证根据注册密码来参加游戏。 [认证密设定] $SANGOKU_URL/entry.cgi?mode=ATTESTATION (从这里登记) 注册好了,认证了,就开始游戏吧! _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ $GAME_TITLE娗棟恖 maccyu E-Mail: komatsuo\@livedoor.com Home: http://www20.pos.to/~maccyu/ EOM # JIS僐乕僪傊曄姺 &jcode'convert(*mail_sub,'jis'); &jcode'convert(*mail_msg,'jis'); # 僐儊儞僩撪偺夵峴偲僞僌傪暅尦 $mail_msg =~ s/
/\n/ig; # 儊乕儖張棟 open(MAIL,"| $sendmail -t") || &E_ERR("送信失败"); print MAIL "To: $in{'mail'}\n"; print MAIL "Subject: $mail_sub\n"; print MAIL "MIME-Version: 1.0\n"; print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n"; print MAIL "Content-Transfer-Encoding: 7bit\n"; print MAIL "X-Mailer: $ver\n\n"; print MAIL "$mail_msg\n"; close(MAIL); } 1;