您的位置:首页 > 编程语言 > PHP开发

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

2012-05-13 20:24 465 查看
<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文件

<?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 "<font color='BLUE'>".$nickname." [".$sendtime."]</font><br/>";
echo $text;
echo "<br/>";
}
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文件

<?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 "<font color='BLUE'>".$row["nickname"]." [".$row["chattime"]."]"."</font><br/>";
echo $row["message"];
echo "<br/>";
}
$updateSQL="update chats set messageState=1 where speaker='".$friendEmail."' and rapper='".$email."'";
mysql_query($updateSQL);
}
?>


至此,关键的技术点都写出来啦,欢迎大家拍砖!(完)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: