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

📄 main.php

📁 很不错的php聊天室源码,提供给大家学习
💻 PHP
📖 第 1 页 / 共 3 页
字号:
<?php
session_start();
include "include/query.php";
include "include/functions.php";
if(!verifyMember(session_id(),isset($_SESSION["username"])?$_SESSION["username"]:""))
{
	header("location:notice.php?id=".not_login);
	exit;
}
$db = new db_query;
$db->connect();
$onlineResult = $db->query("select * from `onlinelist` where `roomid` = '{$_SESSION["roomid"]}' order by id asc");
$result = $db->query("select `id` from `messages` order by `id` desc limit 1");
if($db->numrows($result))
	$messageid = $db->result($result,0,"id");
else
	$messageid = 0;
//取得聊天室配置信息
$roomName = $db->result($db->query("select `room_name` from `rooms` where `id` = '{$_SESSION["roomid"]}'"),0,"room_name");
$configResult = $db->query("select * from `config`");
while($configRow = $db->fetcharray($configResult))
{
	$config[$configRow["name"]] = $configRow["value"];
}
$roomResult = $db->query("select * from `rooms` where `id` = '{$_SESSION["roomid"]}'");
$roomRow = $db->fetchArray($roomResult);

//尝试获取是否有该用户的留言
$guestbookResult = $db->query("select * from `guestbook` where `to_user` = '{$_SESSION["username"]}' and `readed` = 0");
$totalGuestbookRows = $db->numrows($guestbookResult);
?>
<html>
<head>
<title>天龙聊天室</title>
<meta http-equiv="pragma" content="no-cache">
<META http-equiv="Content-Type" content="text/html;charset=gb2312">
</head>
<!--
	天龙聊天室 版本1.0.0  功能强大的 PHP 聊天室
	本程序由傲天龙(aotianlong@hotmail.com,qq:3697006)所写!
	对于个人可以免费使用,您可以访问http://aotianlong.yeah.net来得到作者对该程序的技术支持
-->
<script language="javascript">
//聊天室配置
var lastContent = "";
var room_grade = <?=$roomRow["grade"]?>;
var masters = "<?=$roomRow["masters"]?>";
var room_maxonline = <?=$roomRow["maxonline"]?>;
var chatroom_name = "<?=addslashes($config["chatroom_name"])?>";
var message_leave = "<?=addslashes($config["message_leave"])?>";
var message_login = "<?=addslashes($config["message_login"])?>";
var message_logout = "<?=addslashes($config["message_logout"])?>";
var message_warn = "<?=addslashes($config["message_warn"])?>";
var message_bomb = "<?=addslashes($config["message_bomb"])?>";
var message_lock = "<?=addslashes($config["message_lock"])?>";
var message_unlock = "<?=addslashes($config["message_unlock"])?>";
var message_clear = "<?=addslashes($config["message_clear"])?>";
var message_kick = "<?=addslashes($config["message_kick"])?>";
var message_warning_out = "<?=addslashes($config["message_warning_out"])?>";
var message_changeroom = "<?=addslashes($config["message_changeroom"])?>";
var chatroom_affiche = "<?=addslashes($config["chatroom_affiche"])?>";
var chatroom_welcome = "<?=addslashes($config["chatroom_welcome"])?>";
var title_interval = <?=$config["title_interval"]?>;
var chatroom_roomname = "<?=addslashes($roomName)?>";
var enable_title = <?=$config["enable_title"]?>;
var enable_picture = <?=$config["enable_picture"]?>;
var say_maxlength = <?=$config["say_maxlength"]?>;
var say_interval = <?=$config["say_interval"]?>;
var refresh_interval = <?=$config["refresh_interval"]?>;
var username = "<?=$_SESSION["username"]?>";
var lastSayTime = 0;
var lastTitleTime = 0;
var messageid = <?=$messageid?>;
var userrank = <?=$_SESSION["userrank"]?>;
var roomid = <?=$_SESSION["roomid"]?>;
var max_nosay_time = <?=$config["max_nosay_time"]?>*60;
var serverTime = "<?=date('H:i:s')?>";
var notice_show_time = <?=$config["notice_show_time"]?>;
var chatroom_default_split = <?=$config["chatroom_default_split"]?>;
//styels
var page_bgcolor = "<?=$config["page_bgcolor"]?>";
var style_inputsayframe_background_color = "<?=$config["style_inputsayframe_background_color"]?>";
var style_inputsayframe_background_image = "<?=$config["style_inputsayframe_background_image"]?>";
var style_showmessageframe_background_color = "<?=$config["style_showmessageframe_background_color"]?>";
var style_showmessageframe_background_image = "<?=$config["style_showmessageframe_background_image"]?>";
var style_onlinelistframe_background_color = "<?=$config["style_onlinelistframe_background_color"]?>";
var style_onlinelistframe_background_image = "<?=$config["style_onlinelistframe_background_image"]?>";
var style_titleframe_background_color = "<?=$config["style_titleframe_background_color"]?>";
var style_titleframe_background_image = "<?=$config["style_titleframe_background_image"]?>";

var title_from = "<?=$roomRow["title_from"]?>";
var title_time = "<?=$roomRow["title_time"]?>";
var title_content = "<?=$roomRow["title_content"]?>";
var array_colors = new Array();
//发言颜色
array_colors[0] = new Array("#0088FF","#0000FF","#000088","#888800","#008888","#008800","#8888FF","#AA00CC","#8800FF","#888888","#CCAA00","#FF8800","#FF0088","#FF00FF","#000000");
array_colors[1] = new Array("海蓝","亮蓝","深蓝","黄绿","蓝绿","橄榄","淡紫","紫色","蓝紫","灰色","土黄","金黄","玫瑰","紫红","黑色");

var array_face = new Array("无表情","温柔","微笑","同情","依恋","神秘","幸灾乐祸","傻忽忽","很无辜","慢条斯理","不精打彩","严肃","生气","动情","晦气","气愤","伤心","羞涩","激动","兴奋","窘迫","幸福","不高兴","天真","阴险");

var say_enable_filter = <?=$config["say_enable_filter"]?>;
var say_filter = "<?=$config["say_filter"]?>";
document.title = username + " 在 --" + chatroom_name;
var isMaster = false;
if(masters!="")
{
	var arrMasters =  masters.split(",");
	for(var tmp_fi=0;tmp_fi<arrMasters.length;tmp_fi++)
	{
		if(arrMasters[tmp_fi]==username)
		{
			isMaster = true;
		}
	}
}

//是否有留言?
var guestbook = <?=$totalGuestbookRows?>;
//为Array对象写一个deleteItem()方法
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
var url = window.location.href;
var urlpath = url.substr(0,url.lastIndexOf("\/")+1);
var pingbilist = new Array();
function isDirty(str)
{
	var f = say_filter.split(",");
	for(var i=0;i<f.length;i++)
	{
		if(str.indexOf(f[i])>=0)
			return true;
	}
	return false;
}

Array.prototype.deleteItem = delete_array;
function delete_array(index)
{
	var length = this.length;
	var value = this[index];
	delete this[index];
	var newArray = this.slice(0,index).concat(this.slice(index+1,length));
	return newArray;
}
function savedSays()
{
	this.arrSays = new Array();
	this.maxSavedSays = 50;
	this.nowPosition = 0;
	this.addSays = say_add;
	this.moveNext = say_movenext;
	this.movePrev = say_moveprev;
	this.getItem = say_getItem;
	this.state = 0;
}
function say_add(str)
{
	if(this.arrSays.length<=this.maxSavedSays)
	{
		this.arrSays[this.arrSays.length] = str;
		this.nowPosition = this.arrSays.length;
		this.state = 1;
	}
	else
	{
		this.arrSays = this.arrSays.deleteItem(0);
		this.arrSays[this.arrSays.length] = str;
		this.state = 1;
	}
}
function say_movenext()
{
	if(this.nowPosition==this.arrSays.length)
		return;
	this.nowPosition++;
}
function say_moveprev()
{
	if(this.nowPosition==1)
		return;
	if(this.state)
	{
		this.state = 0;
		return;
	}
	this.nowPosition--;
}
function say_getItem()
{
	if(this.arrSays.length)
	{
		if(this.nowPosition==this.arrSays.length+1||this.nowPosition==0)
		{
			if(this.nowPosition==this.arrSays.length+1)
			{
				return (this.arrSays[this.arrSays.length-1]);
			}
			else
			{
				return (this.arrSays[0]);
			}
		}
		else
		{
			return (this.arrSays[this.nowPosition-1]);
		}
	}
	else
	{
		return "";
	}
}
var Sayed = new savedSays();
function NameList()
{
	this.nameLists = new Array();
	this.genders = new Array();
	this.addName = namelist_addName;
	this.delName = namelist_delName;
	this.length = namelist_length;
	this.write = namelist_write;
	this.getItem = namelist_getItem;
	this.getGenderItem = namelist_getGenderItem;
}
function namelist_getItem(index)
{
	return this.nameLists[index];
}
function namelist_getGenderItem(index)
{
	return parseGender(this.genders[index])[0];
}
function namelist_addName(name,gender)
{
	this.genders[this.genders.length] = gender;
	this.nameLists[this.nameLists.length]= name;
}
function namelist_delName(name)
{
	var len = this.nameLists.length;
	for(var i=0;i<len;i++)
	{
		if(this.nameLists[i] == name)
		{
			this.nameLists = this.nameLists.deleteItem(i);
			this.genders = this.genders.deleteItem(i);
		}
	}
}
function namelist_length()
{
	return this.nameLists.length;
}
function namelist_write()
{
	onlinelist.document.close();
	onlinelist.document.open();
	var str = "<html><head><Style type=text/css>body{background-color:"+style_onlinelistframe_background_color+";background-image:url('"+style_onlinelistframe_background_image+"');}a{font-size:14px;color:blue;text-decoration:none;line-height:120%;}a:hover{font-size:14px;color:red;text-decoration:underline}</style></head><body><base target='readmessage'>";
	str += "<div align='center' style='font-size:14px;'>在线名单( <font color='blue'>"+this.nameLists.length+"</font> )</div><br>";
	str += "<a  href='javascript:parent.getFriend()'>自动推荐</a><hr>";
	str += "<a href=javascript:parent.PointTo('大家')>大家</a><br>";
	var genderStr = "";
	for(var i=0;i<this.nameLists.length;i++)
	{
		var result = parseGender(parseInt(this.genders[i]))
		str += "<nobr><a href='javascript:parent.PointTo(\""+this.nameLists[i]+"\")'><font color='"+result[1]+"' title='性别:"+result[0]+"'>"+this.nameLists[i]+"</font></a></nobr><br>";
	}
	str += "</body></html>";
	onlinelist.document.write(str);
}
function parseGender(index)
{
	var GirlColor = "#FF0000";
	var BoyColor = "#000000";
	var DontKnowColor = "#0000FF";
	switch(parseInt(index))
	{
	case 0:
		var color = DontKnowColor;
		genderStr = "秘密";
		break;
	case 1:
		var color = BoyColor;
		genderStr = "男孩";
		break;
	case 2:
		var color = GirlColor;
		genderStr = "女孩";
		break;
	default:
		var color = DontKnowColor;
		break;
	}
	var res = new Array(genderStr,color);
	return res;
}
var onlines = new NameList();
var getMessageNumber = 0;
function getMessage()
{
	xmlhttp.open("get",urlpath+"readmessage.php?messageid="+messageid+"&temp="+getMessageNumber,false);
	xmlhttp.send();
	var result = bytes2bstr(xmlhttp.responseBody);
	lastContent = result;
	eval(result);
	getMessageNumber ++;
}
function getFriend()
{
	if(onlines.length()==1)
	{
		alert("系统找不到合适的人选!");
		return;
	}
	var index = Math.floor(Math.random()*onlines.length());
	if(onlines.getItem(index)==username)
	{
		getFriend();
		return;
	}
	if(onlines.getItem(index)==inputmessage.document.MessageForm.to_user.value&&onlines.length()==2)
	{
		alert("系统找不到合适的人选!");
		return;
	}
	var theName = onlines.getItem(index);
	var res = window.confirm("    用户:"+theName+"\n"+"    性别:"+onlines.getGenderItem(index)+"\n\n"+"系统推荐 "+theName+" 跟你聊天,您愿意吗?");
	if(res)
	{
		inputmessage.document.MessageForm.to_user.value = theName;
	}
}
function showMessageFramePreWrite()
{
	var str = "<html>";
	str += "<head>";
	str += "<meta charset='gb2312'>";
	str += "<style type='text/css'>";
	str += "body{font-size:14px;line-height:160%;font-family:宋体;background-color:"+style_showmessageframe_background_color+";background-image:url('"+style_showmessageframe_background_image+"')}a{font-size:14px;color:blue;text-decoration:none;}a:hover:{font-size:14px;color:blue;text-decoration:underline}.tm{font-size:12px;color:#777777}";
	str += "</style>";
	str += "</head>";
	str += "<base target='readmessage'>";
	str += "<body>";
	str += "【欢迎】"+replaceConfig(username,chatroom_name,chatroom_welcome)+"<br>";
	showmessage.document.write(str);
	showallmessage.document.write(str);
	var masterStr = "";
	if(isMaster)
	{
		masterStr = "您是本房间的主人拥有所有权限。";
	}
	showNotice("您目前进入的房间为 【<font color='blue'>"+chatroom_roomname+"</font>】。"+masterStr);
	if(guestbook)
	{
			showNotice("您有 "+guestbook+" 条留言,请点<a href='guestbook.php?page=1&username="+username+"' target='_blank'>这里</a>查看。");
	}
}
function initChatRoom()
{
	showMessageFramePreWrite();
	preWriteShowPriMessage();
	inputmessage.document.body.style.backgroundImage="url('"+style_inputsayframe_background_image+"')";
	setInterval("getMessage()",refresh_interval);
	preWriteOnlineList();
	preWriteTitle();
	inputmessage.document.MessageForm.split.checked = chatroom_default_split;
	splitWindow();
	setInterval("scrollWindow()",50);
	timer();
}
function preWriteShowPriMessage()
{
	var str = "<html>";
	str += "<head>";
	str += "<meta charset='gb2312'>";
	str += "<style type='text/css'>";
	str += "body{font-size:14px;line-height:160%;font-family:宋体;background-color:"+style_showmessageframe_background_color+";background-image:url('"+style_showmessageframe_background_image+"')}a{font-size:14px;color:blue;text-decoration:none;}a:hover:{font-size:14px;color:blue;text-decoration:underline}.tm{font-size:12px;color:#777777}";
	str += "</style>";
	str += "</head>";
	str += "<base target='readmessage'>";
	str += "<body>";
	str += "【提示】分屏模式 <font color='red'>启用</font> 这里将只显示跟你相关的内容。<br>";
	showselfmessage.document.write(str);
}
//此函数用来处理所有的消息
var tmpnum = 0;
//信息常数
var msg_warn = 1;
var msg_kick = 2;
var msg_bomb = 3;
var msg_lock = 4;
var msg_login = 5;
var msg_logout = 6;
var msg_leave = 7;
var msg_call = 8;
var msg_changeroom = 9;
var msg_rank = 10;
var msg_unforbid = 11;

⌨️ 快捷键说明

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