本文实例讲述了简单的php+mysql聊天室实现方法。分享给大家供大家参考,具体如下:
这里介绍的程序分为 8 个文件:
frameset框架页面:index.php
显示聊天室内容页:show.php
用户登陆页面:login.php
用户发言页面:speak.php
数据库配置文件:config.php
页面美化样式:style.css
数据库文件:chat.sql
发言表情包:face/
分别介绍如下:
一、数据库文件chat.sql如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
SET
FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `chat`
-- ----------------------------
DROP
TABLE
IF EXISTS `chat`;
CREATE
TABLE
`chat` (
`chtime` datetime
default
NULL
,
`nick`
char
(10)
NOT
NULL
,
`words`
char
(150)
default
NULL
,
`face`
int
(11)
default
NULL
) ENGINE=InnoDB
DEFAULT
CHARSET=gb2312;
-- ----------------------------
-- Records of chat
-- ----------------------------
INSERT
INTO
chat
VALUES
(
'2013-03-21 04:15:14'
,
'smiling'
,
'测试显示发言'
,
'3'
);
INSERT
INTO
chat
VALUES
(
'2013-03-21 04:46:26'
,
'smiling'
,
'时间有问题,'
,
'5'
);
INSERT
INTO
chat
VALUES
(
'2013-03-21 04:47:28'
,
'php新手'
,
'新手来了。'
,
'1'
);
INSERT
INTO
chat
VALUES
(
'2013-03-21 04:55:19'
,
'php新手'
,
'显示正确啦'
,
'6'
);
INSERT
INTO
chat
VALUES
(
'2013-03-21 17:12:47'
,
'php新手'
,
'正确显示时间'
,
'5'
);
INSERT
INTO
chat
VALUES
(
'2013-03-21 17:23:19'
,
'php新手'
,
'时间显示正确。'
,
'7'
);
INSERT
INTO
chat
VALUES
(
'2013-03-21 17:23:29'
,
'php新手'
,
'哈哈'
,
'1'
);
INSERT
INTO
chat
VALUES
(
'2013-03-22 08:28:00'
,
''
,
'今天再来看看。'
,
'3'
);
|
二、框架页面如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<
head
>
<
meta
http-equiv
=
"Content-Type"
content
=
"text/html; charset=gb2312"
/>
<
title
>简单的php+mysql聊天室--框架页</
title
>
</
head
>
<
frameset
rows
=
"*,80"
cols
=
"*"
framespacing
=
"0"
bordercolor
=
"#E1D1AE"
>
<
frameset
rows
=
"*"
cols
=
"*,284"
>
<
frame
src
=
"show.php"
name
=
"mainFrame"
/>
<
frame
src
=
"login.php"
name
=
"rightFrame"
/>
</
frameset
>
<
frame
src
=
"speak.php"
name
=
"bottomFrame"
/>
</
frameset
>
<
noframes
><
body
>
</
body
>
</
noframes
>
</
html
>
|
三、用户登陆页面login.php如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
<html>
<head>
<title>简单的php+mysql聊天室--登陆页</title>
<link href=
"style.css"
rel=
"stylesheet"
type=
"text/css"
/>
</head>
<body>
<table width=
"80%"
border=
"0"
cellspacing=
"0"
cellpadding=
"0"
>
<tr>
<td> </td>
</tr>
</table>
<table width=
"250"
border=
"0"
align=
"center"
cellpadding=
"5"
cellspacing=
"1"
bgcolor=
"#CBB486"
>
<tr>
<td height=
"30"
align=
"center"
bgcolor=
"#F5E6C1"
>
<?php
if
(
$_GET
[
"tj"
] ==
"out"
){
setcookie (
"nick"
,
""
, time() - 3600);
header(
"refresh:0; URL='login.php'"
);
}
if
(
$_POST
[
"submit"
]){
setcookie(
"nick"
,
$nick
);
//用cookie记录用户昵称,也可以用SESSION
header(
"refresh:0; URL='login.php'"
);
}
?>
<?php
if
(
$_COOKIE
[
"nick"
]){
echo
"欢迎您 "
.
$_COOKIE
[
"nick"
].
" <a href=?tj=out>退出房间</a>"
;}
else
{
echo
"请输入您的昵称"
;}?></td>
</tr>
<tr>
<td bgcolor=
"#F5E6C1"
>
<form action=
""
method=
"post"
>
<input type=
"text"
name=
"nick"
cols=
"20"
>
<input type=
"submit"
name=
"submit"
value=
"登录"
>
</form></td>
</tr>
</table>
<table width=
"80%"
border=
"0"
cellspacing=
"0"
cellpadding=
"0"
>
<tr>
<td> </td>
</tr>
</table>
<table width=
"250"
border=
"0"
align=
"center"
cellpadding=
"5"
cellspacing=
"1"
bgcolor=
"#CBB486"
>
<tr>
<td height=
"70"
bgcolor=
"#F5E6C1"
class
=
"login"
>程序说明:因本聊天室是作者仅花了一天时间而写的程序,所以仅适合新手练习研究,高手可以进行绕行,新手可以在本基础上进行增加发言IP和其它字段功能,最主要的是理解本程序的制作原理。欢迎新手朋友加入夏日源码交流群:<SPAN id=
"qid"
>101140934</SPAN></td>
</tr>
</table>
</body>
</html>
|
四、用户发言页面speak.php如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
<html>
<head>
<title>简单的php+mysql聊天室--发言页</title>
<link href=
"style.css"
rel=
"stylesheet"
type=
"text/css"
/>
</head>
<body>
<table width=
"80%"
border=
"0"
cellspacing=
"0"
cellpadding=
"0"
>
<tr>
<td height=
"2"
></td>
</tr>
</table>
<form action=
"show.php"
target=
"mainFrame"
method=
"post"
>
发言表情:
<input type=
"radio"
value=
"1"
name=
"face"
checked=
"checked"
/>
<img src=
"face/PIC1.GIF"
width=
"20"
height=
"20"
border=
"0"
/>
<input type=
"radio"
value=
"2"
name=
"face"
/>
<img src=
"face/PIC2.GIF"
width=
"20"
height=
"20"
border=
"0"
/>
<input type=
"radio"
value=
"3"
name=
"face"
/>
<img src=
"face/PIC3.GIF"
width=
"20"
height=
"20"
border=
"0"
/>
<input type=
"radio"
value=
"4"
name=
"face"
/>
<img src=
"face/PIC4.GIF"
width=
"20"
height=
"20"
border=
"0"
/>
<input type=
"radio"
value=
"5"
name=
"face"
/>
<img src=
"face/PIC5.GIF"
width=
"20"
height=
"20"
border=
"0"
/>
<input type=
"radio"
value=
"6"
name=
"face"
/>
<img src=
"face/PIC6.GIF"
width=
"20"
height=
"20"
border=
"0"
/>
<input type=
"radio"
value=
"7"
name=
"face"
/>
<img src=
"face/PIC7.GIF"
width=
"20"
height=
"20"
border=
"0"
/>
<input type=
"text"
name=
"words"
cols=
"20"
>
<input type=
"submit"
value=
"发言"
>
</form>
</body>
</html>
|
五、显示聊天室内容页show.php如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
<?php
require_once
(
'config.php'
); ?>
<?php
if
(
$words
){
$query
=
"insert into chat(chtime,nick,words,face)values(now(),'$nick','$words','$face')"
;
//插入SQL语句
mysql_query(
$query
,
$link_ID
);
//发送留言到数据库
header(
"refresh:0; URL='show.php'"
); }
?>
<html>
<head>
<title>简单的php+mysql聊天室--显示留言页</title>
<link href=
"style.css"
rel=
"stylesheet"
type=
"text/css"
/>
<meta http-equiv=
"refresh"
content=
"5;url=show.php"
>
</head>
<body>
<?php
//最新发言显示在最下面
$sql
=
"select * from chat order by chtime asc"
;
$result
=mysql_query(
$sql
);
$total
=mysql_num_rows(
$result
);
$info
=(
$total
/15-1)*15;
if
(
$total
<15){
$str
=
"select * from chat order by chtime asc;"
;
//查询字符串
}
else
{
$str
=
"select * from chat order by chtime asc limit $info,15;"
;
//查询字符串
}
$result
=mysql_query(
$str
,
$link_ID
);
//送出查询
while
(
$row
=mysql_fetch_array(
$result
)){
?>
<table width=
"700"
border=
"0"
align=
"center"
cellpadding=
"5"
cellspacing=
"1"
bgcolor=
"#CBB486"
>
<tr>
<td width=
"33"
align=
"left"
bgcolor=
"#F5E6C1"
class
=
"font"
>昵称:</td>
<td width=
"41"
align=
"center"
bgcolor=
"#F5E6C1"
class
=
"font"
><?php
if
(
$row
[nick] ==
""
){
echo
"游客"
;}
else
{
echo
$row
[nick];}?></td>
<td width=
"42"
align=
"center"
bgcolor=
"#F5E6C1"
class
=
"font"
><img src=
"face/PIC<?php echo $row[face];?>.GIF"
width=
"20"
height=
"20"
></td>
<td width=
"56"
align=
"left"
bgcolor=
"#F5E6C1"
class
=
"font"
>发言内容:</td>
<td width=
"160"
align=
"left"
bgcolor=
"#F5E6C1"
class
=
"font"
><?php
echo
$row
[words];?></td>
<td width=
"56"
align=
"left"
bgcolor=
"#F5E6C1"
class
=
"font"
>发言时间:</td>
<td width=
"244"
align=
"left"
bgcolor=
"#F5E6C1"
class
=
"font"
><?php
echo
$row
[chtime];?></td>
</tr>
</table>
<table width=
"100"
border=
"0"
align=
"center"
cellpadding=
"0"
cellspacing=
"0"
>
<tr>
<td height=
"5"
></td>
</tr>
</table>
<?php } ?>
</body>
</html>
|