⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ebs_sub6.cgi

📁 WEBGAME 机器人大战EBS(无尽的战争) 架設方法 WIN2K系列主機
💻 CGI
📖 第 1 页 / 共 2 页
字号:
$to='l';$o=time;

#################################
#	新用户注册登录		#
#	www.ltb.idv.tw	#
#################################
sub ENTRY2 {
	dbmopen (%P,"$DBM_P",0666);
	while (($Name,$Val) = each %P){
		@VALUES = split(/\s/,$Val);
		if ($VALUES[26] && ($VALUES[26] < time-(172800*$COOKIE_KEEP) && $VALUES[6]==0)||($VALUES[26] < time-172800 && !$VALUES[23])){
			delete $P{"$Name"};
		}else{$CountPl++;}
	}
		dbmclose %P;

### add reg time test 	
	$REGIP=$ENV{'REMOTE_ADDR'};$REGTIME=time;$regflag=1;
	&DBM_INPORT(L);
	$lc=0;
	foreach $t(sort {$b <=> $a} keys %L){$lc++;if ($lc <= $LOGIN_H){@lgn=split(/!/,$L{"$t"});
	if (($lgn[1]eq$REGIP)&&($REGTIME<=($t+$REGTIMELIM))&&$t&&$regflag){$regflag=0;}}}
	if ($regflag==0){&ERROR('你想干什么是不是想杀你主ID呢?!');}
### add reg time test end

	&DBM_INPORT(C);
	require "$LOG_FOLDER/$HASH_DATA";
	if ($CountPl >= $ENTRY_MAX){&ERROR('超过了登录人数的限额');}
	&HEADER2;
	print "你的ip:$REGIP";
	print << "	-----END-----";
	<script language="JavaScript">
		function changeImg(){
			num=document.entry.imgSelect.selectedIndex;
			document.msImg.src="$IMG_FOLDER2/"+ num +".gif";
		}
		function checkRiyou (){
			if (document.entry.pname.value == '') {window.alert("用户名没有输入");return false
			}else if(document.entry.msname.value == '') {window.alert("机体名没有输入");return false
			}else if(document.entry.pass.value == '') {window.alert("密码还没有输入");return false
			}else if(document.entry.pname.value.match('[&! =.,<>]') != null) {
				window.alert("你使用了半角符号或者其它,请换一个字符");return false ;
			}else if(document.entry.msname.value.match('[&! =.,<>]') != null) {
				window.alert("你使用了半角符号或者其它,请换一个字符");return false ;
			}else if(document.entry.pass.value.match('[&! =.,<>]') != null) {
				window.alert("你使用了半角符号或者其它,请换一个字符");return false ;
			}else {if (confirm('登录确认') == true){return true;}else{return false}	}
		}
	</script>
	<style type="text/css">
		.td1{text-align:center;background-color:#909090;font-weight:bold;font-size:16px;color:#404040;}
	</style>
	<table width=100% height=100%><tr><td $center>
	<img src=$IMG_FOLDER4/reg.gif>
	</td></tr><tr><td $center>
	<form action=$MAIN_SCRIPT method=POST name=entry>
	<input type=hidden name=cmd value=KAKUNIN>
	<table $tb_stl>
	<tr><td>用户名</td>
	    <td><input type=text name=pname size=15 maxlength=10 $STYLE_L>
	    <font style="font-size:12px;">请输入用户名</font></td>
	<td $middle rowspan=7><img src=\"$IMG_FOLDER2/1.gif\" name=\"msImg\" height=140 width=114></td>
	</tr>
	<tr><td>机体名</td><td><input type=text name=msname size=15 maxlength=10 $STYLE_L> 请输入机体名</td></tr>
	<tr><td>用户密码</td><td><input type=password maxlength=8 name=pass size=15 $STYLE_L>
	    <font style="font-size:12px;">用户密码<font color=red><b>半角</b></font>最多8个字符</font></td></tr>
    <tr><td>选择战士</td><td><select name=imgSelect $STYLE_L onChange=\"changeImg()\">
	-----END-----
	foreach (0..$ICON){
		print "<option value=\"$_\">&nbsp;ICON No.$_\n";
		}
	print << "	-----END-----";
	</select> <a href="$MAIN_SCRIPT?ICON" target="_blank"><font color=#FFFFFF size=2>战士图库</font></a></td></tr>
	<tr><td>机体属性</td><td><select name=type $STYLE_L>
	<option value=1>&nbsp;攻击力重视&nbsp;<option value=2>防御力重视<option value=3>回避率重视
	<option value=4>命中率重视<option value=0>平均型</select></td></tr>
	<tr><td>性格 </td><td><select name=chara $STYLE_L>
	<option value=0>热血<br><option value=1>弱气<br><option value=2>平均<br>
	<option value=3>激情<br><option value=4>冷静<br><option value=5>冷酷</select></td></tr>
	<tr><td>武器</td><td><select name=w $STYLE_L>
	-----END-----
	while (my($wkey,$wvalue) =each %WEAPON_LIST) {
		if (length($wkey) == 1){my@w=split(/,/,$wvalue);print "<option value=$wkey>$w[0]\n" if $w[6] !=2 && $w[6] !=6 && $w[6] !=4;}
	}

	print "</select> <a href=\"$MAIN_SCRIPT?WEAPON\" target=\"_blank\"><font color=#FFFFFF size=2>武器资料</font></a></td></tr><tr><td>颜 色</td>";
	print "<td colspan=2><input type=radio name=cl value=#FFFFFF checked><font color=#FFFFFF>■</font>\n";
		$br=1;
		foreach (@COLOR){$br++;
			print "<input type=\"radio\" name=\"cl\" value=$_><font color=$_>■</font>\n";
		if ($br==10){print"<br>\n";$br=0;}
		}
	print "</td></tr><tr><td>国籍<td colspan=2>\n";
	print "<select size=1 name=\"kuni\" $STYLE_L>\n";
	while (($key,$value) =each %C) {print "<option value=$key>$key\n";}
	print "<option value=\"\">流浪者";
	print << "	-----END-----";
		</select></td></tr>
			<tr><td colspan=3 align="center">
			<input type=submit value=登录 class=button2 onMouseOver=\"style.color='#000000';style.background='#adff2f';\" onMouseOut=\"this.style.color='#adff2f';style.background='#00550c';\" onClick="return checkRiyou()">
			<input type=reset value=清除 class=button2 onMouseOver=\"style.color='#000000';style.background='#adff2f';\" onMouseOut=\"this.style.color='#adff2f';style.background='#00550c';\">
		    </td></tr></table></td></tr><tr><td align=center>
	-----END-----
	&FOOTER;
	print "</td></tr></form></body>";
}

#################################
#	验证数据确定登录	#
#	www.downlove.com	#
#################################
sub KAKUNIN2 {
	&LOCK;
	&DBM_INPORT(P);
	&UNLOCK;
	if($P{"$FORM{'pname'}"}){&ERROR('这个用户名已经给人使用,请选择其它用户名'); }
	if (!$FORM{'pname'} && !$FORM{'msname'} && !$FORM{'pass'}) { &ERROR('请完成必须选项'); }
	if (length($FORM{'pname'}) >= 30 or length($FORM{'msname'}) >= 30){&ERROR('用户名或者机体名称超过规定长度');}

### add 2nd count test
	dbmopen (%P,"$DBM_P",0666);
	while (($Name,$Val) = each %P){
		@VALUES = split(/\s/,$Val);
		if ($VALUES[26] && $VALUES[26] < time-(172800*$COOKIE_KEEP) && $VALUES[6]==0){
			delete $P{"$Name"};
		}else{$CountPl++;}
	}
	dbmclose %P;
	if ($CountPl >= $ENTRY_MAX){&ERROR('登录人数超过');}
### add 2nd count test
### add reg time test 	
	$REGIP=$ENV{'REMOTE_ADDR'};$REGTIME=time;$regflag=1;
	&DBM_INPORT(L);
	$lc=0;
	foreach $t(sort {$b <=> $a} keys %L){$lc++;if ($lc <= $LOGIN_H){@lgn=split(/!/,$L{"$t"});
	if (($lgn[1]eq$REGIP)&&($REGTIME<=($t+$REGTIMELIM))&&$t&&$regflag){$regflag=0;}}}
	if ($regflag==0){&ERROR('同ip注册时间间隔太短!');}
### add reg time test end

	&HEADER2;
	print << "	-----END-----";
	<style type="text/css">
		.td1{text-align:center;background-color:#909090;font-weight:bold;font-size:16px;color:#404040;}
	</style>
	<script language="JavaScript">
	function checkEntry(){if(confirm('登录名和密码确认完成') == true){return true;}else{return false}
	}
	</script>
	<table width=100% height=100%><tr><td $center>
	<img src=$IMG_FOLDER4/logo_wars.gif>
	</td></tr><tr><td $center>
	<table $tb_stl><tr><td style="font-size:16px;">用户名</td>
	<td style="font-size:16px;">$FORM{'pname'}(请不要忘记了)</td></tr>
	<tr><td>用户密码</td>
	<td style="font-size:16px;">$FORM{'pass'}(请不要忘记了)</td></tr>
	<tr><td>国 籍</td>
	<td style="font-size:16px;">$FORM{'kuni'}</td></tr>
	<tr><td style="font-size:16px;">头 像</td>
	<td><img src=\"$IMG_FOLDER2/$FORM{'imgSelect'}.gif\"><font color=\"$FORM{'cl'}\">$FORM{'msname'}</font>
	</td></tr></table>
	<form action=$MAIN_SCRIPT method=POST target=\"_top\">
	<input type=hidden name=cmd value=RESIST>
	<input type=hidden name=pname value=$FORM{'pname'}>
	<input type=hidden name=msname value=$FORM{'msname'}>
	<input type=hidden name=msImg value=$FORM{'imgSelect'}>
	<input type=hidden name=pass value=$FORM{'pass'}>
	<input type=hidden name=kuni value=$FORM{'kuni'}>
	<input type=hidden name=type value=$FORM{'type'}>
	<input type=hidden name=w value=$FORM{'w'}>
	<input type=hidden name=chara value=$FORM{'chara'}>
	<input type=hidden name=cl value=$FORM{'cl'}>
	<p align=center><input type=submit value=登录 class=button2 onMouseOver=\"style.color='#000000';style.background='#adff2f';\" onMouseOut=\"this.style.color='#adff2f';style.background='#00550c';\" onClick=\"return checkEntry()\">
	</form>
	<form action="$MAIN_SCRIPT?ENTRY" method=POST>
	<input type=submit value=重新注册 class=button2 onMouseOver=\"style.color='#000000';style.background='#adff2f';\" onMouseOut=\"this.style.color='#adff2f';style.background='#00550c';\"></form>
	</td></tr><tr><td $center>
	-----END-----
	&FOOTER;
	print "</td></tr></form></body>";
}
sub RESIST2 {

	### add 2nd count test
	dbmopen (%P,"$DBM_P",0666);
	while (($Name,$Val) = each %P){
		@VALUES = split(/\s/,$Val);
		if ($VALUES[26] && $VALUES[26] < time-(172800*$COOKIE_KEEP) && $VALUES[6]==0){
			delete $P{"$Name"};
		}else{$CountPl++;}
	}
	dbmclose %P;
	if ($CountPl >= $ENTRY_MAX){&ERROR('登录人数超过');}
	### add 2nd count test

	### add reg time test 	
	$REGIP=$ENV{'REMOTE_ADDR'};
	$REGTIME=time;
	$regflag=1;
	&DBM_INPORT(L);
	$lc=0;
	foreach $t(sort {$b <=> $a} keys %L){
		$lc++;
		if ($lc <= $LOGIN_H){
			@lgn=split(/!/,$L{"$t"});
			if (($lgn[1]eq$REGIP)&&($REGTIME<=($t+$REGTIMELIM))&&$t&&$regflag)
			{$regflag=0;}
		}
	}
	if ($regflag==0){&ERROR('同ip注册时间间隔太短!');}
	### add reg time test end
	### add login date
	if ($ENV{'REMOTE_HOST'}){$host="$ENV{'REMOTE_HOST'}";}else{$ipad=pack('C4',split(/\./,$ENV{'REMOTE_ADDR'}));
		$host = gethostbyaddr($ipad,2);}
		$lc=0;
		dbmopen (%L,"$DBM_L",0666);
			foreach (sort {$b <=> $a} keys %L){$lc++;delete $L{"$_"} if $lc > $LOGIN_H;}
			$L{"$DATE"}="$FORM{'pname'}!$ENV{'REMOTE_ADDR'}!$host";
		dbmclose %L;
	### add end
	
	&DBM_INPORT(P);
	$npwd=crypt "$FORM{'pname'}",eb;
	if ($npwd ne "ebWuEq.c3dTqg"){
	if($P{"$FORM{'pname'}"}){&ERROR('非法注册方式','这里post的保护很严'); }}
	
	$ST5=(int(rand(10)+1)*100)+1000;$ST6=(int(rand(10))*5)+100;
	$ST1=int rand(5)+3;$ST2=int rand(5)+3;$ST3=int rand(5)+3;$ST4=int rand(5)+3;
		if ($FORM{'type'} == 1){$ST5+=2500;$ST1+=2;$ST6+=50;}
 elsif ($FORM{'type'} == 2){$ST5+=3000;$ST2+=2;$ST6+=40;}
 elsif ($FORM{'type'} == 3){$ST5+=2000;$ST3+=2;$ST6+=50;}
 elsif ($FORM{'type'} == 4){$ST5+=2500;$ST4+=2;$ST6+=60;}
 elsif ($FORM{'type'} == 0){$ST5+=2000;$ST6+=40;}
	&LOCK;
	$pwd=crypt "$FORM{'pass'}",eb;
	dbmopen (%PL,"$DBM_P",0666);
		$PL{"$FORM{'pname'}"} = ("1 $DATE $pwd $FORM{'msname'} $FORM{'type'} $FORM{'kuni'} 0 noComment 0 $FORM{'w'}!0   $FORM{'chara'} $FORM{'cl'} 0 $ST5 $ST5 $ST6 $ST6 $ST1 $ST2 $ST3 $ST4 0 0 0 $DATE $FORM{'msImg'}  1 0");
	dbmclose (%PL);
	&UNLOCK;
	SET_COOKIE:{
		my @gmt = gmtime(time + $COOKIE_KEEP*24*60*60);
		$gmt[0] = sprintf("%02d", $gmt[0]);	$gmt[1] = sprintf("%02d", $gmt[1]);
		$gmt[2] = sprintf("%02d", $gmt[2]);	$gmt[3] = sprintf("%02d", $gmt[3]);	$gmt[5] += 1900;
		$gmt[4] = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec')[$gmt[4]];
		$gmt[6] = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday')[$gmt[6]];
		my $date_gmt = "$gmt[6], $gmt[3]\-$gmt[4]\-$gmt[5] $gmt[2]:$gmt[1]:$gmt[0] GMT";
		my $cook = "pname:$FORM{'pname'},pass:$FORM{'pass'}";print "Set-Cookie: EB=$cook; expires=$date_gmt\n";
	}
	print "Location: $MAIN_SCRIPT" . "\n\n";


}
sub DELETE4 {
	&HEADER2;
	@pair = split(/;/, $ENV{'HTTP_COOKIE'});
		foreach (@pair) {my($key, $value) = split(/=/, $_);$DUMMY{$key} = $value;}
	@pairs = split(/,/, $DUMMY{EB});
		foreach (@pairs) {my($key, $value) = split(/:/, $_);$COOKIE{$key} = $value;}
	print << "	-----END-----";
	<script language="JavaScript">
		function checkRiyou (){
			if (document.del.pname.value == '') {window.alert("ID没有输入");return false
			}else if(document.del.pass.value == '') {window.alert("PASS没有输入");return false
			}else {if (confirm('登录名删除') == true){return true;}else{return false}	}
		}
	</script>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -