JavaQQ聊天发文件MySQL_php+js+mysql设计的仿webQQ-<7>聊天消息的发送与刷新

本文介绍了一种使用JavaScript和PHP实现即时聊天功能的方法。通过JavaScript进行消息发送和接收,并利用PHP处理数据库操作,实现消息的实时更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<12>消息的发送

Js文件

function sendMessage(friendEmail,chat,text){

var xmlhttp;

if(window.XMLHttpRequest){//code for IE7+, Firefox, Chrome, Opera, Safari

xmlhttp=new XMLHttpRequest();

if(xmlhttp.overrideMimeType){//设置MIME类别

xmlhttp.overrideMimeType("text/xml");

}

}

else{//code for IE6, IE5

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

}

var today=new Date(); //获取本地时间

var y=today.getFullYear();

var mo=today.getMonth()+1; //因为js获取本地时间的月份的值的范围是0-11,所以在这里加1

var d=today.getDate();

var h=today.getHours();

var mi=today.getMinutes();

var s=today.getSeconds();

var sendtime=y+"-"+mo+"-"+d+" "+h+":"+mi+":"+s;

var url="sendMessage.php?friendEmail="+friendEmail.id+"&text="+text+"&sendtime="+sendtime; //转到php文件来处理消息

xmlhttp.open("GET",url,true);

xmlhttp.onreadystatechange=function(){

if (xmlhttp.readyState==4 && xmlhttp.status==200){

document.getElementById(chat).innerHTML+=xmlhttp.responseText;

var e=document.getElementById(chat);

e.scrollTop=e.scrollHeight; //该语句使滚动条永远在最下面

}

}

xmlhttp.send(null);

}

PHP文件

session_start();

header('Content-Type:text/html;charset=GB2312');

include("conn.php");

$email=$_SESSION["email"];

$nickname=$_SESSION["nickname"];

$friendEmail=$_GET["friendEmail"];

$text=$_GET["text"];

$sendtime=$_GET["sendtime"];

$sql="insert into chats values(now(),'$email','$friendEmail','$text',0)";

if($result=mysql_query($sql))

{

echo "".$nickname." [".$sendtime."]
";

echo $text;

echo "
";

}

else

{

echo "消息写入数据库失败!";

}

?>

<13>消息的刷新

Js文件

function refreshChatDiv(obj,chatDivID){

var xmlhttp;

if(window.XMLHttpRequest){//code for IE7+, Firefox, Chrome, Opera, Safari

xmlhttp=new XMLHttpRequest();

if(xmlhttp.overrideMimeType){//设置MIME类别

xmlhttp.overrideMimeType("text/xml");

}

}

else{//code for IE6, IE5

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

}

var url="refreshChatDiv.php?friendEmail="+obj.id; //转到PHP文件去查询数据库中有没有新的消息

xmlhttp.open("GET",url,true);

xmlhttp.onreadystatechange=function(){

if (xmlhttp.readyState==4 && xmlhttp.status==200){

document.getElementById(chatDivID).innerHTML+=xmlhttp.responseText;

var e=document.getElementById(chatDivID);

e.scrollTop=e.scrollHeight;

setTimeout(function() {refreshChatDiv(obj,chatDivID);},3000); //每隔3秒检测一下有没有新的信息

}

}

xmlhttp.send(null);

}

PHP文件

session_start();

header('Content-Type:text/html;charset=GB2312');

include("conn.php");

$email=$_SESSION["email"];

$friendEmail=$_GET["friendEmail"];

$sql="select nickname,message,chattime from chats,user where chats.speaker=user.email and speaker='".$friendEmail."' and rapper='".$email."'

and messageState=0";

if($result=mysql_query($sql))

{

while($row=mysql_fetch_array($result))

{

echo "".$row["nickname"]." [".$row["chattime"]."]"."
";

echo $row["message"];

echo "
";

}

$updateSQL="update chats set messageState=1 where speaker='".$friendEmail."' and rapper='".$email."'";

mysql_query($updateSQL);

}

?>

至此,关键的技术点都写出来啦,欢迎大家拍砖!(完)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值