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+" "+getLocalTime(objData.msg[i].time) + "<br>  ");
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那块。我也比较懒,没有写好注释,优化代码,注意编程规范等。主要平时也是有时间就看书,没有时间处理这些了。