微信公众号 
图码生活

每天发布有五花八门的文章,各种有趣的知识等,期待您的订阅与参与
电脑报 1992-2001 十年文章全集
电脑报 1992-2001 十年文章全集
包含从 1992 年 - 2001 年间,两万余篇期刊文章,查询最少输入两个字符
随便看看
读取中
读取中
标题使用PHP制作聊天室
栏目网络与通信
作者随风潜行
发布2001年45期
  实现聊天室有多种方法,我们可以用CGI、ASP等等。在这儿,我们看看使用PHP+MySQL是如何实现一个聊天室的。
   实现技术
  聊天室其实是多人共同使用的一段程序。在BBS中我们也可以聊天,但Web聊天室和BBS的聊天室不同的地方是聊天室每收到一句话,就马上分送给在聊天室的网络使用者,非常快捷方便,虽然BBS使用Telnet的方式也可以实现即时聊天,但是这样的方式对服务器的配置要求比较高。
  制作聊天室所需要使用到的技术主要是:
  Server Push
  Client Pull
  Server Push由Web服务器将资料以多重 MIME编码的方式,送给客户端,目前较少网站使用这种方式;而Client Pull则利用了HTML的META标签,并利用http-equiv=“Refresh”的属性,表示资料要重新载入,至于载入时间,则利用content属性来达成。
  这里我们就使用PHP+MySQL来实现一个最简单的聊天室。
   实现步骤
   1.熟悉META标签的使用
  <META>标签与其他标签不同,它不是成对出现的,而是只有初始标签,没有结束标签。它通常放在两个<HEAD>标签之间,以便让浏览器可以尽快准备更新用户端的网页。
  它包括三个重要属性
  NAME
  HTTP-EQUIV
  CONTENT
  HTTP-EQUIV和CONTENT属性是HTML文档向浏览器传送信息的通道。
  <META HTTP-EQUIV=“refresh” CONTENT=“15;URL=<? echo $PHP_SELF;?>”>
  这个语句是告诉浏览器,每隔15秒重新刷新一次。URL<........>表明刷新时指向自身。
   2.编写聊天室的框架
  如果每15秒刷新一遍屏幕,那么我们输入的信息岂不也被刷新了吗?不要急,我们可以使用FRAME框架的方法来划分用户的输入和服务器的输出。
  程序代码如下:
  ……
  <frame src=“display.php”name=list scrolling=auto>//框架的上半部分,载入display.php
  <frame src=“write.php”name=post scrolling=no>//框架的上半部分,载入write.php
  ……
  我们的网页被分成两格。上面可以显示聊天的内容,下面用户可以输入信息。分别由display.php和write.php完成。
  有了框架,那么怎么把每个人输入的语句储存起来呢?我们可以建立一个数据库存放聊天的信息。例如可以用MySQL建立一个名为talk的数据表来储存聊天信息。
  create table talk(
  userid int(5) not null auto_increment
  username varchar(20) not null
  date varchar(8) not null
  text varchar(50) not null
  primary key (userid)
  );//创建聊天室所使用的数据库表
   3.编写将用户输入的信息提交给服务器,并存储在MySQL的talk表中
  程序代码如下:
  <? //这是文件write.php
  if(($username!=“”)and($text!=“”))  
  {
  $connect=Mysql_connect(“yourhost”,“webuser”,“root”);//连接MySQL数据库
  $query=“insert into talk(username,date,text)
  values('$username','$date','$text)”;//插入语句
  $result=Mysql_db_query(“myweb”,$query);}//插入执行
  ?>
  <html>
  <head>
  <title>用户输入</title>
  <meta http-equiv=“Content-Type”content=“text/html;charset=gb2312”>
  </head>
  <body bgcolor=“#FFFFFF”text=“#000000”>
  <form method=“POST”action=“write.php”><p>
  你的ID;<input type=“text”name=“userid”size=“12”>
  发言<input type=“text”name=“text”size=“57”>
  <input type=“submit”value=“提交”></p>
  </form>
  </body>
  </html>
  如果id和text中的内容不是空的话,程序就连接MySQL并把信息加入talk表中。
  action中指向的是write.php,即每次输入以后自动刷新。其余时候该部分不受影响。
   4.连接MySQL数据库,显示聊天内容
  在这一步中,我们用简单的SQL语言调出talk里的内容。
  程序代码如下:
  <!-这是文件display.php>
  <html>>
  <meta http-equiv=“refresh”content=“10;url=<? echo $php_self;?>”>
  <body>
  <?
  echo“<center><font size='5'>欢迎光临我的聊天室</font>”;
  msql_connect(“yourhost”,“webuser”,“password”);//连接数据库
  $query=“select username text from talk order by date desc limit 0,20”
  //查询语句
  $result=Mysql_db_query(“myweb”,$query);//执行
  if($result){ 
  while ($r=Mysql_fetch_array($result)){//取出结果
  $username=$r[“username”];//使php变量
  //username可使用表中username。
  $text=$r[“text”];
  echo“<tr>”;
  echo“<td align='left'><font size='1'>$username 说道:$text</font></td>”;
  echo“</tr>”;//显示结果
  else{
  echo “对不起,系统故障!</body></html>”
  Mysql_free_result($result);//断开与数据库连接
  ?>
  </body>
  </html>
  ·在select语句中使用order by...desc...语句是让系统按照时间顺序对查询的结果进行降序排列,从而显示最近的聊天内容。
  ·语句limit 0,20用来返回最多20条记录。
  这样就快完成了最简单的聊天室系统,剩下最后一步,把两部分结合起来。用户每次载入框架网页talk.php就可以使用了(如

)。