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");
- }
- ?>
通過這種簡單的方法,我們實現了私聊,
注意:
前面的保存文件處理時,對發言的判斷文字前后有<!-- 和 -->這樣在屏幕顯示時就可以不用特殊處理了!
新聞熱點
疑難解答