• php_D3_“简易聊天室 ”实现的关键技术 详解


                         PHP+MySQL实现Internet上一个简易聊天室的关键技术

     系统目标:

    聊天室使用数据库汇集每个人的发言,并可将数据库内的发言信息显示在页面,让每个用户都可以看到,具体功能如下:

    a.用户登录:用户发言时显示其登录名信息

    b.用户发言:用户输入说的话

    c.显示发言信息:用户浏览所有发言信息

    设计思路:

    (1).建立聊天室数据库及相关数据表

    (2).实现用户登录页面(login.php)

    (3).实现发言页面(speak.php)

    (4).实现发言显示页面(chat_display.php)

    (5).实现主页面(main.php)

    关键技术:

    1.自动刷新页面:

    如果要想使页面每隔一定时间就自动刷新,其实现方法是在HTML的<HEAD>与</HEAD>标签之间加上如下语句:

    <meta http-equiv="Refresh" content="秒数";url=跳转的文件或地址>

    例如:用户来到页面20s后自动跳转至另一页面new.php,

    <meta http-equiv="Refresh" content="20";url=new.php>

    2.传递用户名:

    在用户登录进入聊天室后,系统应该一直保留其登录信息,以便其发言时使用,可通过Session来实现。session是一种常用的信息存储机制,在此之间要说明本例中的应用。

    (1).在用户登录系统时,需要注册一个session变量来存储其登录名信息:

    1 <?php
    2         session_start();                              //装载session库,一定要放在首行
    3         $user_name=$_POST["nick"];
    4         session_register("user_name") ;    //注册    $user_name  变量
    5 ?>

    其中,第2行打开session功能,第3行得到页面表单上用户输入的昵称信息,第4行注册session变量user_name.

    (2).在用户发言的页面上,在其发言时,获取session变量user_name,并将其值连同其发言内容存入数据库:

    1 <?php session_start();
    2 ···
    3 $author=$_SESSION["user_name"];
    4 ···           //把author信息存入数据库
    5 ?>

    这样,在用户离开系统前,系统将一直利用session来保存登录名信息,可以随时在需要时使用。

    3.显示最新发言:

    简易聊天室另一个需要解决的问题是,在显示发言信息时,由于发言信息很多,不能将其全部显示出来,而只显示最新的一定数量的发言信息。这可以通过对发言信息按发言时间顺序排序递增,并选择最后的部分发言实现。

    下面是在页面显示最新的15条发言信息:

     1 @mysql_data_seek($resut,$rows-15); //移动记录指针到前15笔记录
     2 if ($rows<15) 
     3        $l=$rows;
     4  else 
     5         $l=15;                          //记录总数小于15,则最多为该记录数
     6 for ($i=1;$i<=$l;$i++)         //通过循环读取发言信息
     7 {
     8       list($cid,$author,$create_time,$text)=mysql_fetch_row($result);
     9       echo $create_time;
    10       echo " ";
    11       echo "【".$author."】";
    12       echo"说到:" ; 
    13       echo $text; 
    14       echo "<BR>";        //输出留言内容
    15             }

     其中,第1行$result 为查询所有留言得到的记录集,通过mysql_data_seek()命令来移动其记录游标到倒数第15条记录上;然后6~15行输出至多15条发言。

    另外,数据库也没必要保留全部用户发言信息,否则会是数据库讯速膨胀。可以使用一个策略:只保留最近一定数量的发言,而把其他过期发言及时删除。

    系统实现:

    (1).创建数据库:

    CREATE DATABASE 'my_chat';

    (2).创建chat表:

    1 -- 创建chat表:
    2 CREATE TABLE `chat` (
    3 `cid` INT NOT NULL AUTO_INCREMENT ,
    4 `author` VARCHAR( 50 ) NOT NULL ,
    5 `create_time` TIME NOT NULL ,
    6 `text` BLOB NOT NULL ,
    7 PRIMARY KEY ( `cid` ) 
    8 );
  • 相关阅读:
    优麒麟(UbuntuKylin)不是国产Linux操作系统
    中间件
    RapeLay(电车之狼R)的结局介绍 (隐藏结局攻略)
    HDU 4284 状压dp+spfa
    素数推断算法(高效率)
    【iOS开发-60】案例学习:多组数据的tableView设置、添加右側组索引、多层数据模型设置以及valueForKeyPath
    理解class.forName()
    Oracle经典查询案例
    Java抓取网页数据(原网页+Javascript返回数据)
    破解windows下MySQL服务启动不了的情况下不能对其进行全然卸载的解决方式
  • 原文地址:https://www.cnblogs.com/X-knight/p/5373430.html
Copyright © 2020-2023  润新知