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

📄 chat.pl

📁 java开发的聊天室
💻 PL
字号:
#!/usr/bin/perl
# Perl Location one your server
#引用文件的绝对目录
$chathead=".";
#$cgiurl=$ENV{'SCRIPT_NAME'};
$cgiurl="http://7758.com/cgi-bin/chatok/chat.pl";
require "$chathead/chat-config.pl";
require "$chathead/chat-lockfile.pl";
$|=1;
$userlevel =1;
$allow_html=0;
$exist     ="no";
&get_form;
$roomtitle=&get_var('room' ,'\n|↑');
if ($roomtitle eq '') { $roomtitle="冰花雪夜";}
$onlinefile="$roomtitle";
$messagefile      = "$roomtitle.msg";
&set_var;
require "$chathead/chat-checkip.pl";
&checkip;

if ($job eq "login") {
	if($roomtitle=~ /爱情/i)
	{
		require "$chathead/chat-returnonline.pl";
		&return_thisonline;
	}
	require "$chathead/chat-count.pl";
	&count;
	require "$chathead/chat-chkuserpwd.pl";
	&check_usrpwd;
	require "$chathead/chat-setcookie.pl";
	&setcookie;
	$userinfo3="&username=$username&userpassword=$crypassword&room=$roomtitle";
	require "$chathead/chat-writeonline.pl";
	require "$chathead/chat-writemsg.pl";
	require "$chathead/chat-returnwhole.pl";
	require "$chathead/chat-error.pl";
	&checknamespace;
   	&write_online("online"); 
	&write_allroom("login") if ($exist eq "no"); 
	&write_message("mysays3");
	&return_whole; 
}

elsif ($job eq "allselect") {
	&send_html;
	require "$chathead/chat-allselect.pl";
	&allselect;
}

elsif ($job eq "dnd") {
	&send_html;
	require "$chathead/chat-dnd.pl";
	require "$chathead/chat-chkpwd1.pl";
	&check_usrpwd1;
	&donotdisturb;
}

elsif ($job eq "actdnd") {
	&send_html;
	require "$chathead/chat-actdnd.pl";
	require "$chathead/chat-chkpwd1.pl";
	&check_usrpwd1;
	&dodisturb;
}

elsif ($job eq "kicklog") {
	&send_html;
	require "$chathead/chat-chkpwd1.pl";
	&check_usrpwd1;
	if ($userlevel>=$level_kicklog)
	{
		require "$chathead/chat-admin.pl";
		&kicklog;
	}
}

elsif ($job eq "setright") {
	&send_html;
	require "$chathead/chat-chkpwd1.pl";
	require "$chathead/chat-admin.pl";
	&check_usrpwd1;
	if ($userlevel>=$level_right){ &showregusers;}
}

elsif ($job eq "rightok") {
	&send_html;
	require "$chathead/chat-chkpwd1.pl";
	require "$chathead/chat-admin.pl";
	&check_usrpwd1;
	&rightusers;
}

elsif ($job eq "rightok1") {
	&send_html;
	require "$chathead/chat-chkpwd1.pl";
	require "$chathead/chat-admin.pl";
	&check_usrpwd1;
	&rightusers1;
}

elsif ($job eq "chgmypwd") {
	&send_html;
	require "$chathead/chat-chkpwd1.pl";
	require "$chathead/chat-admin.pl";
	&check_usrpwd1;
	if ($userlevel>=$level_chgmypwd){ &chgmypwd;}
}

elsif ($job eq "chgmypwdok") {
	&send_html;
	require "$chathead/chat-chkpwd1.pl";
	require "$chathead/chat-admin.pl";
	&check_usrpwd1;
	&chgmypwdok;
}

elsif ($job eq "setpwd") {
	&send_html;
	require "$chathead/chat-chkpwd1.pl";
	require "$chathead/chat-admin.pl";
	&check_usrpwd1;
	if ($userlevel>=$level_changepwd){ &showpwdform;}
}

elsif ($job eq "changeok") {
	&send_html;
	require "$chathead/chat-chkpwd1.pl";
	require "$chathead/chat-admin.pl";
	&check_usrpwd1;
	&changepassword;
}

elsif ($job eq "setkick") {
	&send_html;
	require "$chathead/chat-chkpwd1.pl";
	require "$chathead/chat-admin.pl";
	require "$chathead/chat-writemsg.pl";
	require "$chathead/chat-chkusers.pl";
	&check_usrpwd1;
	#检查踢人权利
	&check_kickright;
	&showallusers;
}

elsif ($job eq "displayuser") {
	&send_html;
	require "$chathead/chat-displayuser.pl";
	&displayuser;
}

elsif ($job eq "kick") {
	&send_html;
	require "$chathead/chat-userinfo.pl";
	&adduserinfo("kick");
	require "$chathead/chat-chkpwd1.pl";
	require "$chathead/chat-admin.pl";
	require "$chathead/chat-chkusers.pl";
	&check_usrpwd1;
	#检查踢人权利
	&check_kickright;
	&kickusers;
}

elsif ($job eq "logout") {
	require "$chathead/chat-chkpwd1.pl";
	require "$chathead/chat-writeonline.pl";
	require "$chathead/chat-writemsg.pl";
	require "$chathead/chat-logout.pl";
	&check_usrpwd1;
	#删除密码帐号COOKIE
	&delcookie;
	#删除所有单间的本人在线信息
	@addroom     =&readtxtfile($addroomfile);
	foreach (@addroom) {
   		($temp1,$roomname,$temp2)=split(/"/,$_);
		&write_outline("$roomname");
   	} 
   	&write_allroom("logout");
   	&return_logout; 
}

elsif ($job eq "look") {
	&send_html;
	require "$chathead/chat-chkpwd1.pl";
	require "$chathead/chat-returnmsg.pl";
	require "$chathead/chat-chkusers.pl";
	&check_usrpwd1;
	&check_users;
	&return_message; 
}

elsif ($job eq "says") {
	require "$chathead/chat-chkpwd1.pl";
	&check_usrpwd1;
	if($roomtitle=~ /爱情/i)
	{
		require "$chathead/chat-returnonline.pl";
		&return_thisonline;
	}
	require "$chathead/chat-writeonline.pl";   
	&write_online(online);
	&check_room;
	&send_html;
	require "$chathead/chat-returnmsg.pl";
	require "$chathead/chat-writemsg.pl";
	require "$chathead/chat-chkusers.pl";
	require "$chathead/chat-chkdnduser.pl";
	&chkdnduser;
	&check_users;
	require "$chathead/chat-userinfo.pl";
	&adduserinfo("says");  
	require "$chathead/chat-usercount.pl";
if ($towhoway eq "private")
{
	if (((&usercount($username))<$privatefu)&&($userlevel<$level_high))
	{
		$towhoway="" ;
		&write_message("mysays1");
		}	#如果信用点少于私聊一次花费的信用点,就不许私聊
	else {&adduserinfo("private");}	#如果是私聊就记录私聊一次
}	
	$tempstring=substr($says,0,5);
	if (($tempstring eq "\/send")&&($userlevel >= $level_high))
	{	$says=substr($says,6,length($says));
		&write_allroom("system");}
	else
	{   if (($towho ne "")&&(&checkuseron($roomtitle,$towho) ne 1)) {&write_message("mysays");}
	else {&write_message("says");}}
	&return_message;
}
	
elsif ($job eq "online") {
	require "$chathead/chat-userinfo.pl";
	&adduserinfo("look");
	require "$chathead/chat-chkpwd1.pl";
	&check_usrpwd1;
	&send_html;
	require "$chathead/chat-returnonline.pl";
	&return_online;
}

elsif ($job eq "showonline") {
	&send_html;
	require "$chathead/chat-online.pl";
	&showonline;
}

elsif ($job eq "adver") {
	&send_html;
	require "$chathead/chat-chkpwd1.pl";
	require "$chathead/chat-adver.pl";
   	&return_adver; 
}

elsif ($job eq "settype") {
	&send_html;
	require "$chathead/chat-chkpwd1.pl";
	require "$chathead/chat-returntype.pl";
	&check_usrpwd1;
   	&return_type;
}

elsif ($job eq "setfunc") {
	&send_html;
	require "$chathead/chat-chkpwd1.pl";
	require "$chathead/chat-func.pl";
	&check_usrpwd1;
   	&return_func; 
}

elsif ($job eq "showkickip") {
	require "$chathead/chat-chkpwd1.pl";
	&check_usrpwd1;
	&send_html;
	require "$chathead/chat-admin.pl";
	&showkickip if($userlevel>=$level_high); 
}
elsif ($job eq "kickip") {
	require "$chathead/chat-chkpwd1.pl";
	&check_usrpwd1;
	&send_html;
	require "$chathead/chat-admin.pl";
	&kickip; 
}

elsif ($job eq "showform") {
	#否则就显示登陆窗口
	require "$chathead/chat-login.pl";
	&login;
}

elsif ($job eq "showcount") {
	require "$chathead/chat-count.pl";
	&showcount;
}

elsif ($job eq "setrecord") {
	#设置录音功能
	require "$chathead/chat-chkpwd1.pl";
	&check_usrpwd1;
	require "$chathead/chat-recordit.pl";
	&setrecord if($userlevel>=$level_high);
}
elsif ($job eq "lookrecord") {
	#查看录音
	require "$chathead/chat-chkpwd1.pl";
	&check_usrpwd1;
	require "$chathead/chat-recordit.pl";
	&lookrecord if($userlevel>=$level_high);
}
elsif ($job eq "clearrecord") {
	#清除录音
	require "$chathead/chat-chkpwd1.pl";
	&check_usrpwd1;
	require "$chathead/chat-recordit.pl";
	&clearrecord if($userlevel>=$level_high);
}
elsif ($job eq "showrecord") {
	#显示录音操作截面
	require "$chathead/chat-chkpwd1.pl";
	&check_usrpwd1;
	require "$chathead/chat-recordit.pl";
	&showrecord if($userlevel>=$level_high);
}

elsif ($job eq "showhelp") {
	#显示使用说明
	require "$chathead/chat-showhelp.pl";
	&showhelp;
}
elsif ($job eq "displaycount") {
	&send_html;
	require "$chathead/chat-displaycount.pl";
	&displaycount;
}
else
{
	#否则就显示登陆窗口
	require "$chathead/chat-login.pl";
	&login;
}
######################
sub send_html {
  if ($has_send ne "1") {
	print "Content-type: text/html;CHARSET=gb2312\n";
	print "Pragma:no-cache\n\n";
    $has_send = "1";
  }
}

###########
sub get_form {
require "$chathead/chat-chkpwd1.pl";
&firstcheck;

@querys = split(/&/, $ENV{'QUERY_STRING'});
foreach (@querys) {
  ($name,$value) = split(/=/, $_);
  $value = &filterhtml($value);
  &setvaluetoform($name, $value); 
}
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
foreach (@pairs) {
  ($name, $value) = split(/=/, $_);
  $value =~ tr/+/ /;
  $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  $value = &filterhtml($value);
  &setvaluetoform($name, $value); 
}
}

##########
sub filterhtml {
local($return)=$_[0];
$return =~ s/<!--(.|\n)*-->//g;
if ($allow_html != 1) {
   $return =~ s/<([^>]|\n)*>//g;
   $return =~ s/<//g;
   $return =~ s/size//g;
   $return =~ s/face//g;
#   $return =~ s/font//g;
}

#杜绝不文明字眼
require "$chathead/chat-filter.pl";
&filter($return);
#限制使用SCRIPT语句

if (($return=~/script/i)||($return=~/js/i) ||($return=~/jscript/i)||($return=~/onclick/i)||($return=~/onmouseover/i)||($return=~/button/i))
{
	&send_html;
	require "$chathead/chat-error.pl";
	&error("script");
}

return $return;
}
##########
sub setvaluetoform {
if ($FORM{$_[0]}) {
   $FORM{$_[0]}="$FORM{$_[0]}”$_[1]";
}
else {
   $FORM{$_[0]}=$_[1];
}
}
##########
sub set_var {
$job              =&get_var('job'            ,'\n|↑');
$username         =&get_var('username'       ,'\n|"|<|>|\&|;| |\?|↑');
$username=~s/ //g;
$username=~s/ //g;	
$usersex          =&get_var('usersex'        ,'\n|↑');
$autocls          =&get_var('autocls'        ,'\n|↑');
$towhoway         =&get_var('towhoway'       ,'\n|↑');
$towho            =&get_var('towho'          ,'\n|↑');
$says             =&get_var('says'           ,'\n|↑');
$addkuai          =&get_var('quicksays'   ,'\n|↑');
$addroom          =&get_var('room'   ,'\n|↑');
$miandarao        =&get_var('miandarao'   ,'\n|↑');
$addwordcolor     =&get_var('addwordcolor'   ,'\n|↑');
$addsays          =&get_var('addsays'        ,'\n|↑');
$addsign          =&get_var('addsign'        ,'\n|↑');
$userid       =&get_var('userid'      ,'\n|"|<|>|\&|;| |\?|↑');
$rightname       =&get_var('username'    ,'\n|"|<|>|\&|;| |\?|↑');
$userpassword =&get_var('userpassword');
$changelogouturl  =&get_var('changelogouturl'  ,'\n|↑');
#&checkempty($job     ,"No Job");
&checkempty($username,"请输入用户名!") if($job eq "login");
&checkempty($usersex ,"请选择性别!") if (($usersexmust==1) && ($job eq "login")); 
&checkempty($says    ,"请输入发言内容!")    if ($job eq "says");

$userip=$ENV{'REMOTE_ADDR'};
$userbrowser=$ENV{'HTTP_USER_AGENT'};

($secn,$minn,$hourn,$dayn,$monn,$yearn,$weekn,$yeardayn,$isdst) = localtime(time);
$monn=$monn+1;
#$yearn=substr(localtime,length(localtime)-4,4);
if ($monn<10)  {$monn="0$monn";}
if ($dayn<10)  {$dayn="0$dayn";}
if ($hourn<10) {$hourn="0$hourn";}
if ($minn<10)  {$minn="0$minn";}
if ($secn<10)  {$secn="0$secn";}
if ($yearn>90) {$yearn="19$yearn";}
else {$yearn="20$yearn";}
$daten="$yearn/$monn/$dayn";
$daten1="$yearn/$monn/$dayn/$hourn/$minn";
$timen="$hourn\:$minn\:$secn";
$secn=$hourn*60*60+$minn*60+$secn;
$reloadtimes=4;
$reloadxx=$reloadx*$reloadtimes;
$reloadtimes=20;					#在线人员时间
$reloadxxx=$reloadxx*$reloadtimes;
$userinfo1="&username=$username&userpassword=$userpassword";
$userinfo="$userinfo1&room=$roomtitle&miandarao=$miandarao";
}

#########
sub get_var {
local($return)="";
$return="$FORM{$_[0]}" if ($FORM{$_[0]});
$return=~ s/$_[1]//g;
return $return;
}
#########
sub readtxtfile {
&lockfile("$filehead$_[0]");
open(READTXTFILE,"$filehead$_[0]");
flock(READTXTFILE,$_[1]) if ($_[1]); 
@readtxtfile=<READTXTFILE>;
flock(READTXTFILE,8) if ($_[1]);
close(READTXTFILE);
&unlockfile("$filehead$_[0]");
return @readtxtfile;
}
#############
sub checkempty {
local($chkval)=$_[0];
$chkval =~ s/ |<br>|\n//g;
&error1($_[1]) if ($chkval eq "");
}
##########
sub error1 {
&send_html;
print "<html><head><title>$roomtitle error</title>\n";
print "<META HTTP-EQUIV=REFRESH CONTENT='$_[1];URL=$_[2]'>\n" if (($_[1]) && ($_[2]));
print "</head><body bgcolor=$messageback text=$messageword>\n";
print "<center><h1>ERROR</h1><h2>$_[0]</h2></center>\n";
print "</body></html>\n";
exit 0;
}
sub menuti
{
	print "<table><tr><td>";
	print "<form method=post action=$cgiurl?job=displaycount><input type=submit value=更新排名 $buttonstyle ></form>\n";
	print "</td><td>";
	print "<form method=post action=$cgiurl?job=showform><input type=submit value=冰花雪夜 $buttonstyle ></form>";
	print "</td><td>";
	print "<form method=post action=$cgiurl?job=showonline><input type=submit value=在线名单 $buttonstyle ></form>";
	print "</td><td>";
	print "<form method=post action=$cgiurl?job=showhelp><input type=submit value=使用说明 $buttonstyle ></form>";
	print "</td></tr></table>";
}

⌨️ 快捷键说明

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