📄 ebs_sub6.cgi
字号:
$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=\"$_\"> 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> 攻击力重视 <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 + -