• PHP_D4_“简易聊天室 ”的具体技术实现


         上面已经介绍了系统的关键技术,下面对具体实现进行详解;

         1.开发时,经常需要利用一个配置文件来存储系统的参数,例如:数据库连接信息等。这样可以提高系统的可移植性,当系统的配置发生变化时,例如:更改服务器,就不用修改散布在各个页面的数据库连接信息,而只需修改配置文件即可。

       下面创建一个系统配置文件sys_conf.inc,用来保存数据库连接信息:

    1 <!--sys_conf.inc:系统配置文件------------------------------>
    2 <?php
    3   //数据库配置全局变量
    4   $DBHOST="localhost";
    5   $DBUSER="root";
    6   $DBPWD="";
    7   $DBNAME="my_chat";
    8 ?>

    可以通过require()或include()函数在其他页面引用sys_conf.inc文件,从而得到数据库配置信息。

    其中第4-7行分别定义了$DBHOST、$DBUSER$DBPWD$DBNAME,分别用来保存数据库服务器名、登陆用户名、密码和数据库名。大家可根据需要自行修改。

    2.登陆界面(login.php)

    <!--login.php:My聊天室用户登录页面----------------------->
    <html>
        <head>
            <title>用户登录</title>
        </head>
        <body>
            <center>
            <h1>欢迎来到My聊天室</h1>
            <h2>请输入您的昵称<h2>
            <form action="main.php" method="post" target="_self">
                <input type="text" name="nick" cols="20">
                <input type="submit" value="登录">
            </form>
        </center>
        </body>
    </html>

    注:11-13行定义了一个表单,其中包括昵称输入框nick,提交按钮“登录”,当用户单击该按钮时,通过form的action属性,页面将nick输入框中的信息使用post方式提交至聊天主页面main.php

    3.聊天室主页面(main.php):

    需要使用HTML框架技术,把整个浏览器分为几个独立的页面,每个页面成为其中一个框架,并相互独立,这样页面就不会随着显示留言页面一起自动刷新了。

    <?php
        session_start();                                     //装载Session库,一定要放在首行 
        $user_name=$_POST["nick"]; 
        session_register("user_name");        //注册$user_name变量,注意没有$符号 
    ?>
    
    <!--chat.php:My聊天室主页面----------------------->
    <html>
        <title>My聊天室</title>
            <frameset rows="80%,*">
                <frame src="chat_display.php" name="chat_display">
                <frame src="speak.php" name="speak">
            </frameset>
    </html> 

     第10-13行使用了框架,使整个浏览器窗口包含两个页面,分别是留言显示页面chat_display.php和用户发言页面speak.php。这样,对于自动刷新的问题,就可以独立放在chat_display.php。

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

     1 <!--chat_display.php:显示留言页面----------------------->
     2 <html>
     3     <head>
     4         <title>显示用户留言</title>
     5         <meta http-equiv="refresh" content="5;url=chat_display.php">
     6     </head>
     7     <body>
     8         <?php
     9             require_once("sys_conf.inc");            //系统配置文件,包含数据库配置信息
    10             
    11             //连接数据库
    12             $link_id=mysql_connect($DBHOST,$DBUSER,$DBPWD);            
    13             mysql_select_db($DBNAME);                 //选择数据库my_chat
    14             $str="select * from chat ORDER BY create_time;"; //按找发表时间查找所有聊天信息
    15             $result=mysql_query($str, $link_id); //执行查询
    16             $rows=mysql_num_rows($result); //取得查询结果的记录笔数
    17 
    18             //取得最后15个发言,并显示
    19             @mysql_data_seek($resut,$rows-15); //移动记录指针到前15笔记录
    20             if ($rows<15) $l=$rows; else $l=15; //记录总数小于15,则最多为该记录数
    21             for ($i=1;$i<=$l;$i++) 
    22             {
    23                 list($cid,$author,$create_time,$text)=mysql_fetch_row($result);
    24                 echo $create_time; echo " ";echo "【".$author."】"; echo"说到:" ; echo $text; echo "<BR>";
    25             }
    26 
    27             //清除库中过时的数据
    28             @mysql_data_seek($result,$rows-20); //移动记录指针到前20笔记录
    29             list($limtime)=mysql_fetch_row($result);
    30             $str="DELETE FROM chat WHERE create_time<'$limtime';" ;
    31             $result=mysql_query($str,$link_id); //执行查询字符串,库中只留最后20个记录
    32             
    33             //关闭数据库
    34             mysql_close($link_id);
    35         ?>
    36     </body>
    37 </html>

    第9行,通过require_once()函数来引入系统配置文件,以使用数据库连接信息。

    第11-15行,使用mysql_query()函数进行数据查询,得到chat表中所有数据

    第24行,按“时间+用户+发言内容”的格式将发言输出

    第27-31行,删除数据库中旧的发言信息,这样可以保证数据库的存储量保持一定的值,同样是使用mysql_query()函数向服务器提交查询。

    5.发言页面(speak.php)

    用户的发言过程是写数据库的过程,把用户的发言信息和发言时间及用户名一起保存到chat表中。在chat_display.php上可以读取这些数据并显示出来。

     1 <?php session_start(); ?>
     2 <!--speak.php:用户发言页面----------------------->
     3 <html>
     4     <head>
     5         <title>发言</title>
     6     </head>
     7     <body>
     8         <?php
     9         require_once("sys_conf.inc");            //系统配置文件,包含数据库配置信息
    10         
    11         //发言
    12         if(isset($_POST["text"]))
    13         {
    14             //连接数据库
    15             $link_id=mysql_connect($DBHOST,$DBUSER,$DBPWD);            
    16             mysql_select_db($DBNAME);     //选择数据库my_chat
    17             $time=date("h:i:s");
    18             $author=$_SESSION["user_name"];
    19             $text=$_POST["text"];
    20             $str="INSERT INTO chat(create_time,author,text) values('$time','$author','$text')" ; 
    21             mysql_query($str,$link_id); //送出发言到数据库
    22             mysql_close($link_id);
    23         }
    24         ?>
    25         <!--输入发言的表单-->
    26         <form action="speak.php" method="post" target="_self">
    27             <input type="text" name="text" cols="20">
    28             <input type="submit" value="发言">
    29         </form>
    30     </body>
    31 </html> 

    第1行,使用session_start()函数初始化session库,这样就可以使用已注册的session变量user_name来得到用户的昵称了,具体的数据库获取在第18行使用全部数组$_SEESSION实现。
    第9行,通过require_once()函数来引入系统配置文件,以使用数据库连接信息。

    第12-23行,实现了数据库的插入操作。

    第26-29行定义了HTML表单,包含一个发言输入框text和提交按钮“发言”

    至此,一个简单的聊天室制作就完成了。大家可以根据喜好做一些个性化的设计,如增加一个页面显示当前聊天室人员名单、发送表情、进一步美化页面等······

  • 相关阅读:
    Oracle DBMS_PROFILER 的使用方式 (转)
    2010-09-01 22:29 oracle建表、建主键、外键基本语法
    Oracle11g对AWR的扩展
    Oracle中各个命中率的总结及调优笔记整理
    如何用 SQL Tuning Advisor (STA) 优化SQL语句
    aix分配硬盘
    AIX tar命令
    linux gzip命令参数及用法详解--linux压缩gzip文件命令
    AIX6.1下配置Nmon性能工具
    qqq
  • 原文地址:https://www.cnblogs.com/X-knight/p/5373668.html
Copyright © 2020-2023  润新知