?? chat.cgi
字號:
#!/usr/bin/perl
#------------------------------------------------------#
# 本程序為Yuzi工作室提供 #
# Yuzi聊天室2000多用戶版v1.01 #
#------------------------------------------------------#
require "setup.cgi";
######################
## 以下部分不需修改 ##
######################
$cgiurl="chat.cgi";
$host = $ENV{'REMOTE_ADDR'};
$has_send=0;
$boy = "先生";
$girl = "小姐";
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;
$value =~ s/<!--(.|\n)*-->//g;
$value =~ s/\t/--/g;
$FORM{$name} = $value;
}
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday)= localtime(time);
if($hour<10){$mhour="0".$hour;}else{$mhour=$hour;}
if($min<10){$mmin="0".$min;}else{$mmin=$min;}
if($sec<10){$msec="0".$sec;}else{$msec=$sec;}
$thistime=" (".$mhour.":".$mmin.":".$msec.")";
$this_call_time=($yday+100)*10000+$hour*100+$min;
$a_method=$FORM{'a_method'};
$username=$FORM{'username'};
$userpsd =$FORM{'userpsd'};
$message =$FORM{'message'};
$dx =$FORM{'dx'};
$dz =$FORM{'dz'};
$sex =$FORM{'sex'};
$color =$FORM{'color'};
$bekick =$FORM{'bekick'};
$psd =$FORM{'psd'};
$bq =$FORM{'bq'};
$id =$FORM{'id'};
if(($id ne "")){
open (CHAT,"$filepath/list/$id.cgi")|| die $!;
@lines=<CHAT>;
close(CHAT);
foreach $line (@lines){
($rname,$delpsd,$rmail,$rhome,$title,$yhq,$rtime,$htmlt,$htmlw)=split(/\t/,$line);
}
}
mkdir("$filepath",0777);
mkdir("$filepath/list",0777);
mkdir("$filepath/data",0777);
$chatfile="$filepath/data/$id/chat.htm";
$manyfile="$filepath/data/$id/many.cgi";
$tirenfile="$filepath/data/$id/tiren.cgi";
$srltfile ="$filepath/data/$id/srlt.cgi";
$psdfile ="$filepath/data/$id/psd.cgi";
unless(-f $srltfile){
open(KICK,">$srltfile")||die $!;
close(KICK);
chmod(0666,$srltfile);
}
unless(-f $tirenfile){
open(KICK,">$tirenfile")||die $!;
close(KICK);
chmod(0666,$tirenfile);
}
unless(-f $psdfile){
open(KICK,">$psdfile")||die $!;
close(KICK);
chmod(0666,$psdfile);
}
unless(-f $chatfile){
open(GUEST,">$chatfile")||die $!;
print GUEST <<EOF;
<HTML><HEAD><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><STYLE type=text/css>BODY{FONT-FAMILY: "宋體"; FONT-SIZE: 9pt}A {color : normal;text-decoration : none;}A:Hover {color : Blue;text-decoration : underline;}</STYLE><SCRIPT language=JavaScript>function selectwho(list){parent.frames[0].document.forms[0].dx.value=list;}</SCRIPT>
<!--meta-->
</HEAD><br>
<!--yuzi-->
EOF
close(GUEST);
chmod(0666,$chatfile);
}
unless(-f $manyfile){
open(SEND,">$manyfile")||die $!;
close(SEND);
chmod(0666,$manyfile);
}
if($sex eq "girl"){$usersex=$girl;}else{$usersex=$boy;}
if ($a_method eq "getin") { &getin; exit; }elsif ($a_method eq "kickout") { &kickout; exit; }elsif ($a_method eq "killhtm") { &killhtm; exit; }elsif ($a_method eq "getout") { &getout; exit; }elsif ($a_method eq "chathtm") { &chathtm; exit; }elsif ($a_method eq "sendtalk") { &sendtalk; exit; }elsif ($a_method eq "show") { &show; exit; }elsif ($a_method eq "reg") {®exit;}else{&firstin; exit;}
sub firstin{
&send_html;
print <<EOF;
<html><head><title>$title</title></head><frameset BORDER=0 FRAMEBORDER=0 FRAMESPACING=0 rows=100,*><frame name="dz3" SRC=$cgiurl?a_method=reg&id=$id marginwidth="0" marginheight="0" scrolling="no"><frame name="dz1" SRC=$cgiurl?a_method=show&id=$id marginwidth="10" marginheight="0"></frameset></html>
EOF
}
sub getin{
$ckroom=$username;
$ckroom=~ s/<([^>]|\n)*>//g;
$ckroom=~ s/>/>/g;
$ckroom=~ s/</</g;
$ckroom=~ s/ //g;
$ckroom=~ s/&//g;
$ckroom=~ s/ //g;
if(($username ne $ckroom)||($ckroom eq "")||($userpsd eq "")){&errorview("名字、密碼不能為空及不能含有空格!");exit;}
open(PSD,"$psdfile")|| die $!;
@lines=<PSD>;
close(PSD);
foreach $line (@lines) {
$line=~ s/\n//g;
($rdname,$rdpassword)=split(/\t/,$line);
if(lc($username) eq lc($rdname)){
$regda=1;
if($userpsd eq $rdpassword){
$regdb=1;
}
}
}
if(($regda eq "1")&&($regdb ne "1")){&errorview("名字已被注冊或密碼錯誤! 請重新輸入!");exit;}
if($regda ne "1"){
open(PSD,">>$psdfile")||die $!;
print PSD $username."\t".$userpsd;
print PSD "\n";
close(PSD);
}
$founduser=0;
open(ROOMUSER,"$manyfile")|| die $!;
@lines=<ROOMUSER>;
close(ROOMUSER);
foreach $line (@lines){
$line=~ s/\n//g;
($ruser,$rtime,$rip)=split(/\t/,$line);
if($ruser eq $username){
if($rip eq $host){
&deleteuser;
}else{
$founduser=1;
}
}
}
if($founduser==1){
&send_html;
print <<EOF;
<html>
<head>
<script>
alert("名字已被使用!請重新輸入!");
history.back();
</script></head>
<body>
</body>
</html>
EOF
exit;
}else{
open(ROOMUSER,">>$manyfile")|| die $!;
print ROOMUSER $username."\t".$this_call_time."\t".$host."\n";
close(ROOMUSER);
open(CHAT,"$chatfile")|| die $!;
@lines=<CHAT>;
close(CHAT);
$newmsg="【公告】<b>$username</b>進入聊天室了,大家歡迎他!<font size=1>".$thistime."</font>";
open(CHAT,">$chatfile")|| die $!;
for ($i=0;$i<=22;$i++) {
$_ = $lines[$i];
if(/<!--yuzi-->/){
print CHAT "<!--yuzi-->\n";
print CHAT $newmsg."<br>\n";
}else{
print CHAT $_;
}
}
close(CHAT);
&chathtm;
exit;
}
}
sub chathtm {
open(ONLINE,"$manyfile")|| die $!;
@online=<ONLINE>;
close(ONLINE);
$online=@online;
&send_html;
print <<EOF;
<html>
<head>
<STYLE type=text/css>BODY{FONT-SIZE: 9pt}A {color : normal;text-decoration : none;}A:Hover {color : Blue;text-decoration : underline;}</STYLE>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<script language="JavaScript">
function chksend(){
document.sendmsg.message.value=document.sendmsg.msg.value;
document.sendmsg.msg.value="";
document.sendmsg.msg.focus();
if(document.sendmsg.message.value){
sends=true;
}
return sends;
}
function openclk() {
another=open('$ym/chat.cgi?a_method=chathtm&username=$username&userpsd=$userpsd&sex=$sex&id=$id&$thistime','dz3');
}
</script>
<body bgcolor="F4C9A2" topmargin="0" leftmargin="0"><table border="0" width="100%" cellspacing="0" cellpadding="0" height="99"><tr><td width="22%" height="99" align="center"><img src="$imagurl/mark.gif"><br><font size="2">在線人數:$online<br><a href=reg.cgi target=_blank>免費申請</a></font></td><td width="63%" height="99"><form NAME="sendmsg" ACTION="$cgiurl" METHOD="POST" target="dz1"OnSubmit="return chksend();"><input type="hidden" name="id" value="$id"><input type="hidden" name="username" value="$username"><input type="hidden" name="userpsd" value="$userpsd"><input type="hidden" name="sex" value="$sex"><input type="hidden" name="message" value=""><input type="hidden" name="a_method" value="sendtalk"><div align="center"><center><table CELLSPACING="0" CELLPADDING="0"><tr><td><select name=dx size=1><option SELECTED VALUE="">大家</option>
EOF
foreach $user (@online) {
$user =~ s/\n//g;
if ($user ne "") {
($nuser,$ntime,$nip)=split(/\t/,$user);
print "<option VALUE=$nuser>$nuser</option>\n";
}
}
print <<EOF;
</select></select><select name=dz size=1 ><option VALUE=>說</option><option VALUE=1>私聊</option><option value=2>紅包</option><option value=3>拜年</option><option value=4>驚訝</option><option value=5>同意</option><option value=6>鼓掌</option><option value=7>生日</option><option value=8>頭來了</option><option value=9>道別</option><option value=10>天氣真好</option><option value=11>安慰</option><option value=12>不知道</option><option value=13>昏</option><option value=14>原諒</option><option value=15>知音</option><option value=16>goodbye</option><option value=17>打招呼</option><option value=18>搖頭</option><option value=19>委曲</option><option value=20>跳</option><option value=21>踢</option><option value=22>吻</option><option value=23>慢</option><option value=24>大笑</option><option value=25>化妝</option><option value=26>惡心</option><option value=27>無奈</option><option value=28>害羞</option><option value=29>唱歌</option><option value=30>愉快</option><option value=31>有事</option><option value=32>看</option><option value=33>茶</option><option value=34>道謝</option><option value=35>想</option><option value=36>反對</option><option value=37>清醒</option><option value=38>揮手</option><option value=39>歡迎</option><option value=40>玫瑰</option><option value=41>閃電</option><option value=42>困</option></select>
顏色:<select NAME="color" size="1"><option value="000000">黑色 </option><option value="880000">咖啡 </option><option value="0088ff">海藍 </option><option value="0000ff">亮藍 </option><option value="000088">深藍 </option><option value="888800">黃綠 </option><option value="008888">藍綠 </option><option value="008800">橄欖 </option><option value="8888ff">淡紫 </option><option value="aa00cc">紫色 </option><option value="8800ff">藍紫 </option><option value="888888">灰色 </option><option value="ccaa00">土黃 </option><option value="ff8800">金黃 </option><option value="ff0088">玫瑰 </option><option value="ff00ff">紫紅 </option><option value="ff0000">大紅 </option><option value="3388aa" selected>默認</option></select>
表情:<select NAME="bq" size="1"><option value="">無表情</option><option value="微微笑">微笑 </option><option value="溫柔地說">溫柔 </option><option value="輕輕地唱">輕唱 </option><option value="紅著臉說">臉紅 </option><option value="哈!哈!哈!笑著說">大笑 </option><option value="神秘兮兮地說">神秘 </option><option value="戰(zhàn)戰(zhàn)兢兢地說">戰(zhàn)兢 </option><option value="毛手毛腳地說">毛手 </option><option value="嘟著嘴地說">嘟嘴 </option><option value="慢條斯理地說">慢條 </option><option value="同情地說">同情 </option><option value="幸災樂禍地說">樂禍 </option><option value="快要哭地說">快哭 </option><option value="哭著說">哭 </option><option value="拳打腳踢">拳打 </option><option value="不懷好意地說">壞意 </option><option value="遺憾地說">遺憾 </option><option value="瞪大了眼睛,很詫異">詫異 </option><option value="幸福地說">幸福 </option><option value="翻箱倒柜地說">翻箱 </option><option value="悲傷地說">悲傷 </option><option value="流著口水">流口水 </option><option value="正義凜然">正義 </option><option value="嚴肅地說">嚴肅 </option><option value="生氣地說">生氣 </option><option value="大聲地說">大聲 </option><option value="傻乎乎地說">傻 </option><option value="很滿足地說">滿足 </option><option value="手足無措">無措 </option><option value="很無辜地說">無辜 </option><option value="喃喃自語">自語 </option><option value="惡狠狠地瞪著眼">瞪眼 </option><option value="快要吐地說">想吐 </option><option value="無精打采地說">無采 </option><option value="依依不舍地說">不舍 </option><option value="口吐白沫">白沫</option></select>
</td><td></tr><tr><td><input type="text" maxLength=200 name="msg" size="46"> <input type="submit" value="發(fā)言"> <input type="reset" value="取消"></td></tr><tr><td></form><center><form name="getout" ACTION="$cgiurl" METHOD="POST"><input type="hidden" name="id" value="$id"><input type="hidden" name="username" value="$username"><input type="hidden" name="a_method" value="getout"><INPUT TYPE="BUTTON" NAME="open" value="刷 新" onClick="openclk()">
<input type=button value="幫 助" onclick="window.open('$imagurl/help.htm','help','scrollbars=yes')">
<input type=button value="管 理" onclick="window.open('$cgiurl?a_method=killhtm&username=$username&id=$id','kill','scrollbars=yes')">
<input type="submit" value="離 開">
<br><font size="2">服務提供:<a href=$zyurl target=_blank>$zynames</a> 程序制作:<a href=http://www.yuzi.net target=_blank>Yuzi工作室</a></font></td></tr></table></center></div><script>parent.dz1.location.href="$cgiurl?room=$room&a_method=show&username=$username&id=$id";</script></td><td><img src="$imagurl/$sex.gif"></td></tr></table></body></html>
EOF
}
sub send_html {
if ($has_send ne "1") {
print "Content-type: text/html\n\n";
$has_send = "1";
}
}
sub ck_time {
$tmp_time = $_[0];
$tmp_yday = substr($tmp_time,0,3);
$tmp_hour = substr($tmp_time,3,2);
$tmp_min = substr($tmp_time,5,2);
if ($tmp_min >= 60) { $tmp_min = $tmp_min-60; $tmp_hour = $tmp_hour+1; }
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -