好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

PHP设计聊天室步步通(四) - 综合实例

PHP设计聊天室步步通(四)

3、调用信息发送程序,发布聊天者已经进入的信息

<script>   parent.bl.document.open();   parent.bl.document.write( "<meta http-equiv='refresh' content='0;url=messagesend.php?name=<? print($name); ?>&&action=enter&&pass=<? print($pass); ?>'>" )   parent.bl.document.close();   </script> 

发言由messagesend.php处理完成,注意输出对象为bl,也就是处理发言的框架名称,这样保证发言框架的页面内容的完整

表情和动作

表情和动作极大的丰富了聊天的乐趣,一般的聊天室主要通过2种方法发送

(1) 按钮菜单的方法

通过在一个固定的下拉菜单里面进行选择,找到自己满意的表情,然后选中,按发送按钮发出

(2) 通过手工输入代号

比如网易的以手工输入 //hello 代表欢迎的一段动作,以 //bye 代表再见的一段动作表情

我们这里介绍菜单的具体实现方法,手工输入的不用介绍了吧! 哈哈!除非你记不住那些...

1 ,下拉菜单选择表情动作的实现

为了扩充方便,我们制作了表情动作的数据文件,这样在以后扩充时将会非常方便.

表情动作文件的格式如下($split代表分割符):

//1234$split[1234567,我的朋友在哪里1234!!!!!]

//$split很疑惑的看着对象...

//$split抓呀抓,把头皮都抓破了,也没有想出个所以然来。

//$split怎么回事?这到底是怎么回事

前面的//1234代表表情动作代码,分隔符后面的代表显示的表情动作注意其中的 对象 两个字将会在显示时替换成为发言对象的名字

这段代码用于把菜单选择的对应的表情动作代码写到发送栏里面

<script>   function  changemote($newemote)   {   document.inputform.msg.value = $newemote   }   </script> 

这段代码生成动态下来菜单

<select name= "select"  onchange= "changemote(this.options[this.selectedIndex].value)" >   <option value= "0"  selected>动作</option>   <?   $emotemsg = file($emotefilename);   for ($i=0;$i<count($emotemsg);$i++)   {   $msg = split($split,$emotemsg[$i],99);   print( "<option value=$msg[0]>$msg[1]</option>" );   }   ?>   </select> 

这样就完成了从菜单选动作表情的过程

2 ,表情动作在发言处理程序里的处理过程

messagesend.php

<?     //读入表情动作文件   $emote3  = file( $emotefilename );   $emote3number  =  count ( $emote3 );   for ( $kk =0; $kk < $emote3number ; $kk ++)   {     //分割每个表情动作   $emote =split( $split , chop ( $emote3 [ $kk ]),99);     //如果发言内容等于表情动作   if ( $message  ==  $emote [0])   {     //替换表情动作里面的 对象 为实际的聊天对象名字   $emote [1]= ereg_replace ( "对象" , "<font color=red>$talkto</font>" , $emote [1]);     //发言内容改为动作表情的内容   $message  = "<a href=javascript:parent.cs( '$name' ) target=d> $name </a   >". $emote [1];   break ;   }   }   ?> 

这样我们就实现了表情和动作,如果做一个自动添加动作表情的程序功能,更会增加聊天的娱乐性!

帖图

如果在聊天文字中能增加一些美丽的图片.......

图片代码的生成和表情动作一样,可以菜单选择也可以手工输入,这里只给出格式和代码,不再解释,请察看 表情于动作部分

1 文件格式

//$picturefilename

1$split咖啡色西服$splitxw20151.jpg$split

2$split黑色燕尾服$splitxw201534.jpg$split

编号+名称+图片名称+

2 程序

我的聊天室采用 ///gift+编号的方法显示图片,注意是三个反斜杠,区别于表情动作

<?   //判断发言的内容最前面的7个字符是否是 ///gift   if ( substr ( $message ,0,7) ==  "///gift" )   {     //取得图片的编号,从第7个字符开始的2个字符(注意,字符从0开始编号)   $id  =  substr ( $message ,7,2)-1;     //读入图片文件   $giftmsg  = file( $picturefilename );     //判断是否编号合法   if (( $id  >= 0) && ( $id  <  count ( $giftmsg )) )   {   //分割图片行   $gift =split( $split , $giftmsg [ $id ],99);     //生成图片的发言内容   $message  ="<a href=javascript:parent.cs( '$name' ) target=d><font col   or = $namecolor > $name </font></a>送给<a href=javascript:parent.cs(' $talkt   o ') target=d>$talkto</a>一个$gift[1]<img src=' images/ $gift [2]' width=6   0 height=60 border=0></font>";     //图片生成成功标志   $specialsign  = 1;   }   } 

密谈的实现

每个聊天室都提供了密谈功能,来为那些需要私下里进行交流的聊友提供方便,这里把我的聊天室实现私聊的方法介绍如下:

1 对发送信息的处理

每句私聊都要显示在自己和私聊对象的屏幕上,而其他人不能够看到.这里先对发言内容进行处理,然后再保存到发言文件里面!

//$split为分隔符号

messagesend.php

<?   //判断是否私聊发言   if ( $secret  ==  "on" )   {   //在发言前面加上标记<!--+私聊标记+对象+发言者+--> 其中+代表分隔符   //第一个标记为 secret 表示为私聊,后面的是聊天对象和自己的名字,保证这两个人能看到   $message  = "<!-- $splitsecret $split $talkto $split $name $split --><font c   olor=ff0000>密谈</font> $message ";   }   else   {   //如果第一个标记为 open 表示公开,后面同样为对象和自己的名字   $message  =  "<!--$splitopen$split$talkto$split$name$split-->$message"   ;   }   //然后保存到文件中   ?> 

2 显示私聊的方法

对每个新的发言读入后先进行处理判断,在主动刷新程序里面进行.

messageflush.php

<?   //分割发言内容   $tempmessage  = split( $split , $message [0],99);     //如果发言不是密谈,或者私聊对象是自己,或者发送这句私聊的是自己,那就显示这句话,否则不显示   if ( ( $tempmessage [1] !=  "secret" ) || ( $tempmessage [2] ==  $name ) || (   $tempmessage [3] ==  $name ) )   {     //显示私聊   print( "parent.u.document.writeln(" $message [0] ");rn" );   }   ?> 

通过这种简单的方法,我们实现了私聊,

注意:

前面的保存文件处理时,对发言的判断文字前后有<!-- 和 -->这样在屏幕显示时就可以不用特殊处理了!

查看更多关于PHP设计聊天室步步通(四) - 综合实例的详细内容...

  阅读:40次