PHP 简易聊天室实例

下边作者用读写文本文件的点子给我们简介一下谈心室的制作。该闲谈室一共有八个第一的PHP文件:

聊天室Web程序-Ajax应用,聊天室web-ajax

    
近来二日在做一个归纳的闲谈室程序,涉及到了jquery的Ajax的无刷新更新页面、php连接mysql数据库、mysql的大概操作甚至mysql和mysqli的界别。

    
笔者是在APPServ的Web景况下做的,使用这一个条件的低价是怀有建构web网页的组件都早就集成进去了,那样就足以忽视营造网页的任何构件的设置,而专一于网页全部的布局和职能的兑现,便于生手如笔者这么的生手的学习。

     步骤包蕴那样几步:

     1、html、css创立闲谈室的外形框架,如下图所示。

    
2、JS要做多个方面包车型大巴职业:1)提交客商闲谈信息,然后管理服务器端重临的拉拉扯扯消息,将新闻实时彰显出来;

                                        
2)每间距一依时期发起查询数据库中闲聊记录的要求,然后管理服务器端重回的闲谈音讯,将音讯实时突显出来,这是为着使闲谈可以实行,然则保存在数据库中的音信是有限的,只好刷新一部分。刷新时间影响闲谈记录的延时时间,同时还与互连网等速度有关。

     3、使用Mysql创建数据库、建设布局表格。

    
4、服务器端使用php语句查询数据库,并将结果生成xml文件传回到聊天室分界面。

    具体:

  
1、闲谈室的外形框架。使用html和css就可以,须求注意的是css的质量中的谈心展现记录的开始和结果溢出设置,overflow:auto,其任何可选选项有hidden、visible、scroll、inherit

                       
图片 1

    
2、客商端的Js供给五个地点的效应,第一是:依期刷新,使用自定义的函数updateMsg来兑现

function updateMsg(){
    $.post("./php/backend.php",{time:timestamp},
        function(xml,success){
        $('#loading').remove();//移除loading消息,等待提示
        addMessages(xml);
    });
    setTimeout('updateMsg()',4000);//每隔4秒,读取一次
}

里头的addMessages(卡塔尔函数也是自定义的函数,深入分析从服务器端传回到的音信文件,然后增添到聊天显示区中。

function addMessages(xml){
    if($('status',xml).text() ==2) return; //text获取节点的文本内容
        timestamp=$('time',xml).text();//更新时间戳
        //$.each循环数据
        $('message',xml).each(function(){
                var author=$('author',this).text();//发布者
                var content=$('msg',this).text();//内容
                var htmlcode='<strong>'+author+'</strong>:'+content+'<br />';
                $('#messagewindow').append(htmlcode);//添加到文档中
                $('#messagewindow').scrollTop($('#messagewindow')[0].scrollHeight);//$('#messagewindow')[0]转化为DOM对象
                //让滚动条始终保持在最底部
        });
}

   3、Mysql数据库的制造名称叫chat的数据库和名叫messages的表。

        客商名:root   密码:12345678  数据库名:chat   表名:messages

        数据库的简短利用方式:1)在cmd中央银行使;2)使用AppServ的mysql命令行

        1)在cmd中,张开cmd,常用命令

           net start mysql;   —运维数据库服务。

    mysql-hlocalhost -uroot -p;     回车;须要您输入密码,输入后回车

           SHOW DATABASES;你的数据库列表;

           create table tablename (list)

           describe tablename;—-显示表的项

           select * from tablename;

           delete from tablename where …

           exit/quit;—退出mysql数据库

           net stop mysql;—关闭mysql数据库。

        2)张开AppServ的数据库命令行,用法肖似。

        在自身的程序中树立的表为: 

create table messages (
id int(7) not null auto_increment,
user varchar(255) not null,
msg text not null,
time int(9) not null,
PRIMARY KEY (id)
);

  
4、服务器端使用php语句查询数据库,并将结果生成xml文件传回到闲话室分界面。

   
使用php的时候注意版本难题,在浏览器中平日会用最新的php来运作【php5、php7等】,就大概对有的使用老版本的说话爆发warning大概不当,尽量使用新型的版本,老版本的mysql缺乏稳固,存在一些安全性的主题素材,所以推举使用较高版本的php语句,如mysqli,使用mysql的恢宏版本。i为improve的乐趣。如以下使用数据库和表格语句的新老版本的不等。

$dbhost = "localhost";
$dbuser = "root";
$dbpass = "12345678";
$dbname = "chat";

//旧的,php3、php4等
$dbconn = mysql_connect($dbhost,$dbuser,$dbpass);//将来可能被废弃,mysql
mysql_select_db($dbname,$dbconn);

//新的,php5、php7
$dbconn = mysqli_connect($dbhost,$dbuser,$dbpass,$dbname);

 

全体程序请查看本身的github堆栈:

最近二日在做一个简约的谈天室程序,涉及到了jquery的Ajax的无刷新更新页面、php连接mysql数据库、m…

login.php用来报到

htmlbodyform action=chat.php房 间:select name=room  option value=大厅大厅/option option value=客房客房/option option value=后院后院/option /select您的大名:input type=text name=nameinput type=submit value=进入/form/body/html

chat.php为主文件

htmlheadtitle简易聊天室(作者:东方一蛇())/title/headframeset rows=80%,* cols=* frame src=view.php?room=?php echo $room; ? frame src=input.php?name=?php echo $name; ?room=?php echo $room; ?/framesetnoframesbody bgcolor=#cccccc/body/noframes/html

view.php用来呈现闲谈

htmlmeta  content=5; url=view.php?room=?php echo $room; ?body bgcolor=#cccccc?switch ($room) { case 大厅: $write_file=1.txt; break; case 客房: $write_file=2.txt; break; case 后院: $write_file=3.txt; break; default: $write_file=0.txt; break;}$chat_lenght = 25;$lines = file($write_file);$a = count($lines);$u = $a - $chat_lenght;for($i = $a; $i = $u ;$i--){ echo $lines[$i] . br; }?/body/html

input.php用来输入聊天语句

htmlheadtitle简易聊天室(作者:东方一蛇())/title/headbody bgcolor=#cccccc topalign=0?#说明:为了避免重复,再加上我本人比较懒,以下所有注释我没有在该文件中说明,您可以在本人的网站上看 # 注释1$name = str_replace ( , , $name);$name = str_replace ( , , $name);$name = stripslashes (trim($name));?table border=0form action=input.php method=posttr td房间:font color=blue? echo $room; ?/fontinput type=hidden name=room value=? echo $room; ?大名: font color=blue? echo $name; ?/fontfont style=font-size:9pt;color=color:#cccccc 有任何问题或建议请去a href= target=home主页/a联系a href=mailto:greenchn@163.net东方一蛇/a/fontbr/td/trtrtdinput type=hidden name=name value=? echo $name; ?内容: input type=text name=message size=75input type=submit value=确定/form/td/tr?$t = date(d日H时i分); # 注释2$talk = 100; # 注释3$r = 25; # 注释4switch ($room) { case 大厅: $write_file=1.txt; break; case 客房: $write_file=2.txt; break; case 后院: $write_file=3.txt; break; default: $write_file=0.txt; break;}$max_file_size = $r * ($talk+15); # 注释5$file_size= filesize($chat_file); if ($file_size  $max_file_size) { $lines = file($write_file); $tmp= count($lines); $u = $tmp - $r; for($i = $tmp; $i = $u ;$i--) { $msg_old = $lines[$i] . $msg_old; } $deleted = unlink($write_file); # 注释6 $fp = fopen($write_file, a+); # 注释7 $fw = fwrite($fp, $msg_old); fclose($fp);}$msg = str_replace ( ,  , $message);$msg = str_replace ( , ,$msg);$msg = str_replace ( , ,$msg);$msg = stripslashes ($msg); if ($msg != ){ $fp = fopen($write_file, a+); $fw = fwrite($fp, b[$t]$name :/b $msg); # 注释8 fclose($fp);}?/body/html

疏解表达

申明1:这里管理和标志,上面的呈现大概有标题,您应该将第二个(或卡塔尔(قطر‎形成加上lt(或gt卡塔尔(قطر‎

讲明2:函数date的用法请大家参谋有关文书档案

申明3:设定聊天语句最长值

声明4:设定浏览器显示的谈心语句行数

讲解5:这里丰盛15是为了将闲聊的年月长度加进去

讲解6:文件过长就删除,再新创设贰个

评释7:以写的主意展开三个文书,就算该公文不设有就确立一个

声明8:将闲谈时光,闲谈人,语句写到文件中

终极:我们可以将本聊天室进行改动,加入房间,新建房间等等

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图