设置密码

验证码错误,请重新填写

免费建站旅程马上开始

开始建站
建站中

已有帐号?直接登录

首页>森动学院>网站建设教程 > PHP网页聊天室源码
PHP网页聊天室源码
发布时间: 2014-06-17

PHP是功能强大的服务器端脚本语言。笔者在网站开发中,采用PHP建立了多种应用。下面,以一个简单的聊天室设计为例,介绍PHP在网页开发中的应用。

 

Ajax异步传输可实现无刷新更新页面内容,加上php可轻松实现多人网页聊天室,类似QQ群聊功能。

本文对PHP实现聊天室的源代码进行了详细的分析介绍,需要的朋友参考下:

第一个表是登录表,id自增长,因为聊天室是随机匹配的,也不用登录,所以每个进来的人都插入行,然后把把这个id作为该用户的标志。

      to字段代表用户和谁匹配聊天,是匹配到用户的id

  time是最后一次通信的时间,如果30秒时间内没有任何通信信息,则认为掉线

  status是状态,0为初始状态,匹配到用户后变为1,掉线变为3



第二个表,用于记录聊天信息的

 

通信方面的话,采用的是最简单的ajax轮训。现在有各种技术,长连接之类的,不过我这个要求不高,所以没考虑。当然要很好的体验,我觉得还是要用flash做,或者html5。毕竟聊天这种东西是你来我往的,用socket非常方便,http的话很不好,浪费服务器资源还体验不怎么好。

然后是前端js代码:


 1 $(document).ready(function(){
 2   var url = "chatServer.php"+location.search;
 3   var status = "0";
 4   var msg = "";
 5   var timer;
 6   var delay = 5000;
 7   run();
 8   
 9   function run() {
10       if(timer) {
11           clearTimeout(timer);
12       }
13       switch(status) {
14           case "0":
15               $("#showView").html("正在连接服务器...<br>");
16               login();
17               break;
18           case "1":
19               $("#showView").html("正在匹配好友...<br>");
20               match();
21               break;
22           case "2":
23               $("#showView").html("已匹配到好友,可以进行聊天...<br>");
24               chat();
25               break;
26           case "3":
27               chat();
28               break;
29           default:
30               status = "0";
31       }
32       timer = setTimeout(run,delay);
33   }
34   
35   function login() {
36       $.ajax({
37           url:url,
38           data:"type=login",
39             method:"POST",
40             success:function(data){
41                 var objData = eval('(' + data + ')');
42                 status = objData.status;
43             }
44       });
45   }
46   
47   function match(){
48       $.ajax({
49           url:url,
50           data:"type=match",
51             method:"POST",
52             success:function(data){
53                 var objData = eval('(' + data + ')');
54                 status = objData.status;
55             }
56       });
57   }
58   
59   function chat(){
60       var send = "type=msg";
61       if(msg!="") {
62           send += "&data="+msg;
63       }
64       msg = "";
65       $.ajax({
66           url:url,
67           data:send,
68             method:"POST",
69             success:function(data){
70                 var objData = eval('(' + data + ')');
71                 status = objData.status;
72                 for(var i=0;i<objData.msg.length;i++) {
73                     var htmlMsg = $("<span> </span> ");
74                     if(objData.msg[i].user=="other") {
75                       htmlMsg.attr('style','color:blue');
76                     }
77                     htmlMsg.append(objData.msg[i].name+"&nbsp;&nbsp;"+getLocalTime(objData.msg[i].time) + "<br>&nbsp;&nbsp;&nbsp");
78                   var msg = $("<span></span>");
79                   msg.text(objData.msg[i].msg);
80                      htmlMsg.append(msg);
81                    htmlMsg.append('<br>');
82                    $("#showView").append(htmlMsg);
83                 }
84             }
85       });
86   }
87   
88   function getLocalTime(nS) {   
89        var date = new Date(nS*1000);
90        return date.getHours()+":"+date.getMinutes()+":"+date.getSeconds();
91   }  
92   
93   $("#sendClick").bind('click',function(){
94       msg = $("#sendMsg").val();
95       $("#sendMsg").val("");
96       run();
97       return false;
98   });
99 });

后端代码:

 View Code
php代码用的是框架,当然这应该不太影响,只是用了db那块。我也比较懒,没有写好注释,优化代码,注意编程规范等。主要平时也是有时间就看书,没有时间处理这些了。


文章来源:森动网小鱼儿,转载请注明出处!