當前位置:首頁 > 綜合實例 > 列表

PHP設計聊天室步步通(四)

發布:smiling 來源: PHP粉絲網  添加日期:2013-11-16 21:51:05 瀏覽: 評論:0 

3、調用信息發送程序,發布聊天者已經進入的信息

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

發言由messagesend.php處理完成,注意輸出對象為bl,也就是處理發言的框架名稱,這樣保證發言框架的頁面內容的完整

表情和動作

表情和動作極大的豐富了聊天的樂趣,一般的聊天室主要通過2種方法發送

(1) 按鈕菜單的方法

通過在一個固定的下拉菜單里面進行選擇,找到自己滿意的表情,然后選中,按發送按鈕發出

(2) 通過手工輸入代號

比如網易的以手工輸入 //hello 代表歡迎的一段動作,以 //bye 代表再見的一段動作表情

我們這里介紹菜單的具體實現方法,手工輸入的不用介紹了吧! 哈哈!除非你記不住那些...

1 ,下拉菜單選擇表情動作的實現

為了擴充方便,我們制作了表情動作的數據文件,這樣在以后擴充時將會非常方便.

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

//1234$split“1234567,我的朋友在哪里1234!!!!!”

//$split很疑惑的看著對象...

//$split抓呀抓,把頭皮都抓破了,也沒有想出個所以然來。

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

前面的//1234代表表情動作代碼,分隔符后面的代表顯示的表情動作注意其中的 對象 兩個字將會在顯示時替換成為發言對象的名字

這段代碼用于把菜單選擇的對應的表情動作代碼寫到發送欄里面

  1. <script>  
  2. function changemote($newemote)  
  3. {  
  4. document.inputform.msg.value = $newemote  
  5. }  
  6. </script> 

這段代碼生成動態下來菜單

  1. <select name="select" onchange="changemote(this.options[this.selectedIndex].value)">  
  2. <option value="0" selected>動作</option>  
  3. <?  
  4. $emotemsg = file($emotefilename);  
  5. for($i=0;$i<count($emotemsg);$i++)  
  6. {  
  7. $msg = split($split,$emotemsg[$i],99);  
  8. print("<option value=$msg[0]>$msg[1]</option>");  
  9. }  
  10. ?>  
  11. </select> 

這樣就完成了從菜單選動作表情的過程

2 ,表情動作在發言處理程序里的處理過程

messagesend.php

  1. <?  
  2.  
  3. //讀入表情動作文件  
  4. $emote3 = file($emotefilename);  
  5. $emote3number = count($emote3);  
  6. for($kk=0;$kk$emote3number;$kk++)  
  7. {  
  8.  
  9. //分割每個表情動作  
  10. $emote=split($split,chop($emote3[$kk]),99);  
  11.  
  12. //如果發言內容等于表情動作  
  13. if($message == $emote[0])  
  14. {  
  15.  
  16. //替換表情動作里面的 對象 為實際的聊天對象名字  
  17. $emote[1]=ereg_replace("對象","<font color=red>$talkto</font>",$emote[1]);  
  18.  
  19. //發言內容改為動作表情的內容  
  20. $message = "<a href=javascript:parent.cs('$name') target=d>$name</a  
  21. >".$emote[1];  
  22. break;  
  23. }  
  24. }  
  25. ?> 

這樣我們就實現了表情和動作,如果做一個自動添加動作表情的程序功能,更會增加聊天的娛樂性!

帖圖

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

圖片代碼的生成和表情動作一樣,可以菜單選擇也可以手工輸入,這里只給出格式和代碼,不再解釋,請察看 表情于動作部分

1 文件格式

//$picturefilename

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

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

編號+名稱+圖片名稱+

2 程序

我的聊天室采用 ///gift+編號的方法顯示圖片,注意是三個反斜杠,區別于表情動作

  1. <?  
  2. //判斷發言的內容最前面的7個字符是否是 ///gift  
  3. if(substr($message,0,7) == "///gift")  
  4. {  
  5.  
  6. //取得圖片的編號,從第7個字符開始的2個字符(注意,字符從0開始編號)  
  7. $id = substr($message,7,2)-1;  
  8.  
  9. //讀入圖片文件  
  10. $giftmsg = file($picturefilename);  
  11.  
  12. //判斷是否編號合法  
  13. if(($id >= 0) && ($id < count($giftmsg)) )  
  14. {  
  15. //分割圖片行  
  16. $gift=split($split,$giftmsg[$id],99);  
  17.  
  18. //生成圖片的發言內容  
  19. $message ="<a href=javascript:parent.cs('$name') target=d><font col  
  20. or=$namecolor$name</font></a>送給<a href=javascript:parent.cs('$talkt 
  21. o') target=d>$talkto</a>一個$gift[1]<img src='images/$gift[2]' width=6  
  22. 0 height=60 border=0></font>";  
  23.  
  24. //圖片生成成功標志  
  25. $specialsign = 1;  
  26. }  

密談的實現

每個聊天室都提供了密談功能,來為那些需要私下里進行交流的聊友提供方便,這里把我的聊天室實現私聊的方法介紹如下:

1 對發送信息的處理

每句私聊都要顯示在自己和私聊對象的屏幕上,而其他人不能夠看到.這里先對發言內容進行處理,然后再保存到發言文件里面!

//$split為分隔符號

messagesend.php

  1. <?  
  2. //判斷是否私聊發言  
  3. if($secret == "on")  
  4. {  
  5. //在發言前面加上標記<!--+私聊標記+對象+發言者+--> 其中+代表分隔符  
  6. //第一個標記為 secret 表示為私聊,后面的是聊天對象和自己的名字,保證這兩個人能看到  
  7. $message = "<!--$splitsecret$split$talkto$split$name$split--><font c  
  8. olor=ff0000>密談</font>$message";  
  9. }  
  10. else 
  11. {  
  12. //如果第一個標記為 open 表示公開,后面同樣為對象和自己的名字  
  13. $message = "<!--$splitopen$split$talkto$split$name$split-->$message" 
  14. ;  
  15. }  
  16. //然后保存到文件中  
  17. ?> 

2 顯示私聊的方法

對每個新的發言讀入后先進行處理判斷,在主動刷新程序里面進行.

messageflush.php

  1. <?  
  2. //分割發言內容  
  3. $tempmessage = split($split,$message[0],99);  
  4.  
  5. //如果發言不是密談,或者私聊對象是自己,或者發送這句私聊的是自己,那就顯示這句話,否則不顯示  
  6. if( ($tempmessage[1] != "secret") || ($tempmessage[2] == $name) || (  
  7. $tempmessage[3] == $name) )  
  8. {  
  9.  
  10. //顯示私聊  
  11. print("parent.u.document.writeln("$message[0]");rn");  
  12. }  
  13. ?> 

通過這種簡單的方法,我們實現了私聊,

注意:

前面的保存文件處理時,對發言的判斷文字前后有<!-- 和 -->這樣在屏幕顯示時就可以不用特殊處理了!

Tags: PHP 設計 聊天室

分享到:

天气网首页彩吧