請問聊天式公告 & wog新增功能問題

提供WOG各方面的技術問題,並提供最新path更新。

版主: 涅魂, 簫哥, 10度C~

stu6707
 
文章: 162
註冊時間: 2008-10-26 1:00 pm

請問聊天式公告 & wog新增功能問題

文章stu6707 » 2011-02-07 10:03 am

topic-t37201.html

我把這篇的聊天公告改成
代碼: 選擇全部
if(rand(1,2) == 1) //二十分之一的機率顯示公告
{
   $f=file('./announce.txt');
   $f_max=count($f)-1;
//   echo '<font size=2><font color="#FF1C19"><b>【公告】</b></font> '.$f[rand(0,$f_max)].'</font><br>';
   $as='0###1###0###<font color="#FF1C19"><b>【公告】</b></font> '.$f[rand(0,$f_max)].'###'.time();
   $afp = fopen($_filename,'a+');
   fputs($afp,$as."\r\n");
   fclose($afp);
   unset($f,$as,$afp);
}


不知為什麼失敗了....... 刷新或是送出新訊息會把聊天畫面刪除,完全變空白... 想不出是哪裡出問題 Orz

請大大幫忙 >"< 感謝~~~~



第二個問題
如果我看到其它wog裡的功能,很想要裝上自己的wog
不過作者沒有在水色分享,那我自己寫出一個一樣個功能會有問題嗎?
不是抄襲他的code,是自己寫不過功能一樣
謝謝~




涅魂
 
文章: 4463
註冊時間: 2004-01-04 11:17 am
來自: Taiwan
性別: 男生

Re: 請問聊天式公告 & wog新增功能問題

文章涅魂 » 2011-02-07 11:18 am

你所說的變成空白,是說聊天訊息全部消失,但聊天室的功能性物件仍然存在(背景仍是黑色、輸入框仍然存在),還是所有畫面都變白?

如果可以的話,也能貼個網址出來,我可以直接過去測試。(害羞的話就用PM來說網址吧)

而你說的程式碼著作權的問題,只要能確定程式碼並非抄襲、重複發佈的,或是有遵守License的規範,那要怎麼寫都沒關係囉

單就功能相同而非議是不會被認可的,你就放心的寫吧~~


圖檔

stu6707
 
文章: 162
註冊時間: 2008-10-26 1:00 pm

Re: 請問聊天式公告 & wog新增功能問題

文章stu6707 » 2011-02-07 2:28 pm

是畫面清空,還是可以送出訊息的
假設送出一條訊息,畫面會有一條訊息,如果再按一次送出(刷新聊天室)或是在輸入一條訊息,之前的一條訊息會被清掉
我把$as改成
代碼: 選擇全部
$announce=stripslashes($f[rand(0,$f_max)]);
$as='0###1###0###<font color="#FF1C19"><b>【公告】</b></font> '.$announce.'###'.time();

出現機率設定1/2,不過成功機率也是1/2.... =.=
有時會顯示公告,當前聊天訊息還在
不過有時畫面會清空... 囧

儲存格式沒有錯阿.. 是a+沒錯阿... 為什麼...... OTL

測試網址: loststar.webege.com (速度有點慢.. 抱歉 0.0)

補充代碼:
代碼: 選擇全部
if(rand(1,2) == 1) //二十分之一的機率顯示公告
{
   $f=file('./announce.txt');
   $f_max=count($f)-1;
   $announce=stripslashes($f[rand(0,$f_max)]);
//   echo '<font size=2><font color="#FF1C19"><b>【公告】</b></font> '.$f[rand(0,$f_max)].'</font><br>';
   $as='0###1###0###<font color="#FF1C19"><b>【公告】</b></font> '.$announce.'###'.time();
   $afp = fopen($_filename,'a+');
   fputs($afp,$as."\r\n");
   fclose($afp);
   unset($f,$as,$afp);
}




喔喔~ 那我就放心了 XD




涅魂
 
文章: 4463
註冊時間: 2004-01-04 11:17 am
來自: Taiwan
性別: 男生

Re: 請問聊天式公告 & wog新增功能問題

文章涅魂 » 2011-02-07 3:04 pm

建議你能將公告的功能改寫在if($refresh == true)的裡面,只要將公告字串echo出來就行了,不必寫入文本檔案,這作法也應該能解決你的問題

不過這聊天室的版本實在是太古老了,以現在的觀點來看有嚴重的overhead的問題喔@@


圖檔

stu6707
 
文章: 162
註冊時間: 2008-10-26 1:00 pm

Re: 請問聊天式公告 & wog新增功能問題

文章stu6707 » 2011-02-07 3:31 pm

之前也是用echo,不過設定3,4秒刷新,好像來不及看清楚公告就消失了...... @@
所以才想要寫入chat_log.txt

使用舊版本是因為當初裝聊天室時完全是新手 =.= 不會修改layout,所以就裝最好看的1.6 XD



stu6707
 
文章: 162
註冊時間: 2008-10-26 1:00 pm

Re: 請問聊天式公告 & wog新增功能問題

文章stu6707 » 2011-02-07 3:38 pm

我把公告放到f($refresh == true)裡最下面,還是一樣......... OTL
還是回到echo吧 :(

謝謝涅大的幫忙~




涅魂
 
文章: 4463
註冊時間: 2004-01-04 11:17 am
來自: Taiwan
性別: 男生

Re: 請問聊天式公告 & wog新增功能問題

文章涅魂 » 2011-02-07 3:53 pm

你可以試著自己除錯看看,這裡介紹給你簡單的除錯方法

首先,先將亂數產生公告的程式碼全部註解起來,如果沒問題的話就把註解去掉

然後針對裡面的程式碼來依序註解,來逐步尋找錯誤是出現在哪一行

這類錯誤通常與變數名稱重複、函式的使用方式有關,需要較精細的除錯方式來尋找錯誤


圖檔

stu6707
 
文章: 162
註冊時間: 2008-10-26 1:00 pm

Re: 請問聊天式公告 & wog新增功能問題

文章stu6707 » 2011-02-07 4:56 pm

如果是用echo就沒有問題,寫入txt有時可以顯示,有時又會清空畫面.....
問題就出在下面這句
代碼: 選擇全部
$as='0###1###0###<font color="#FF1C19"><b>【公告】</b></font> '.$f[rand(0,$f_max)].'###'.time();


如果改成
代碼: 選擇全部
$as='0###1###0###<font color="#FF1C19"><b>【公告】</b></font> 公告測試###'.time();

就完全沒有問題,可以正常顯示也不會清空畫面
so.. 最終問題是這段.. $f[rand(0,$f_max)] :evil:

可是echo用這段沒有問題阿..
代碼: 選擇全部
echo '<font color="#FF1C19"><b>【公告】</b></font> '.$f[rand(0,$f_max)].'<br>';


目前找不出為什麼不行...... 先暫時放著吧 @.@ 繼續使用echo




涅魂
 
文章: 4463
註冊時間: 2004-01-04 11:17 am
來自: Taiwan
性別: 男生

Re: 請問聊天式公告 & wog新增功能問題

文章涅魂 » 2011-02-07 5:21 pm

annouce.tx與$_filename的文本編碼不一致可能會是問題的癥結點,可以從這點測試看看


圖檔

stu6707
 
文章: 162
註冊時間: 2008-10-26 1:00 pm

Re: 請問聊天式公告 & wog新增功能問題

文章stu6707 » 2011-02-08 8:23 am

把announce.txt的編碼換成utf-8,問題還是在.... =.=
有時可以顯示,有時又會清空... :evil:
後來把$f[rand(0,$f_max)]換成$f[0],$f[1] and so on
都是清空..... 到了最後一行,可以成功顯示了 :shock: 不會清畫面
換了幾個txt,都是一樣的結果,只有最後一行可以正常顯示,其它行都會清空

搞不清楚為什麼... 只好找了一個替代方法
代碼: 選擇全部
function line_content($filename,$startline,$endline){
      $fp=fopen($filename,"r");
      for($i=1;$i<$startline;$i++){
         fgets($fp);
      }
      for($i=$startline;$i<=$endline;$i++){
         $text.=fgets($fp);
      }
      $text=str_replace("\n","",$text);
      //echo $text;
      return $text;
      fclose($filename);
   }
   $f=file('./announcement.txt');
   $f_max=count($f);
   $line_no=rand(1,$f_max);
   $announce=line_content("announcement.txt",$line_no,$line_no);
   $as='0###1###0###<font color="#FF1C19"><b>【公告】</b></font> '.$announce.'###'.time();
   $afp=fopen($_filename,'a+');
   fputs($afp,$as."\r\n");
   fclose($afp);
   unset($f);
   unset($as,$afp);





回到 Online FF Battle-WOG官方聯盟推廣處

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 3 位訪客

cron