1 頁 (共 1 頁)

[問題]會員改名後,因長度過長,導致亂碼問題(已解決,感謝心靈大大)

發表於 : 2007-03-24 22:55
nightwinded
●架設主機作業系統:Linux
●您的上網方式:ADSL
●您的 phpBB2 版本:phpBB (2.0.22 UTF-8)。
●錯誤狀態:會員改名後,因取名字過長,導亂名字變成亂碼

這兩天替遊戲公會架設一個網站,因此id以遊戲為主,
遊戲的id最多六個中文字,phpbb預設25字元足敷使用。

但是今天發現某會員註冊之後,將id改超過25字元,導致id後面出現亂碼,
原本我以為可以仿照主題限制字數方式來更改id,
卻發現原本註冊的欄位本就限制25字元了。

遊戲角色id可能會有改變,所以我開放會員可以自行更改名字,
若我要限制會員更改名字時,一樣有25字元的限制,應該改那個檔案呢?

感謝各位大大的回覆。

Re: [問題]會員改名後,因長度過長,導致亂碼問題

發表於 : 2007-03-25 14:57
心靈捕手
nightwinded 寫:●架設主機作業系統:Linux
●您的上網方式:ADSL
●您的 phpBB2 版本:phpBB (2.0.22 UTF-8)。
●錯誤狀態:會員改名後,因取名字過長,導亂名字變成亂碼

這兩天替遊戲公會架設一個網站,因此id以遊戲為主,
遊戲的id最多六個中文字,phpbb預設25字元足敷使用。

但是今天發現某會員註冊之後,將id改超過25字元,導致id後面出現亂碼,
原本我以為可以仿照主題限制字數方式來更改id,
卻發現原本註冊的欄位本就限制25字元了。

遊戲角色id可能會有改變,所以我開放會員可以自行更改名字,
若我要限制會員更改名字時,一樣有25字元的限制,應該改那個檔案呢?

感謝各位大大的回覆。
實在看不懂您的問題是甚麼?

既然您知道 '原本註冊的欄位本就限制25字元了'
那麼怎麼會有這個問題呢? :-?
'若我要限制會員更改名字時,一樣有25字元的限制,應該改那個檔案呢?'

發表於 : 2007-03-25 19:45
hollowaysxp
資料庫表phpbb_users
找到
欄位username
型態varchar(25)

所以使用者名稱限制25個字元是在這裡限制。
才會產生亂碼。
因為中文為2個字元。
25 / 2= 12 ........ 1
所以最後一個中文字是用1個字元再裝,所以產生亂碼。
這一個方法就是修改表格內的字元最大長度。

至於改了之後會有問題存在嗎?我也不知道 :mrgreen:

Re: [問題]會員改名後,因長度過長,導致亂碼問題

發表於 : 2007-03-25 22:38
nightwinded
心靈捕手 寫:實在看不懂您的問題是甚麼?

既然您知道 '原本註冊的欄位本就限制25字元了'
那麼怎麼會有這個問題呢? :-?
'若我要限制會員更改名字時,一樣有25字元的限制,應該改那個檔案呢?'
抱歉,我也覺得寫的有點亂 :-(

首先是會員的id產生亂碼的問題,
因為只有後半部有亂碼,所以確定是id過長。

解決方式有二,一是增加資料庫欄位長度(sql部分)、一是限制該輸入欄位(input form部分),
但基於會員id理應不會超過12位元,因此我不打算更改資料庫欄位,
而傾向限制欄位輸入的字元限制。

我的問題來了,當我翻註冊的程式頁面時,的確有25位元的限制,
因此可確定註冊時,註冊者是無法輸入超過25位元的id,
事實上這位玩家也是事後自行更改id才會導致亂碼發生。

我想知道的是,在個人資料修改的地方,主要是由那個程式控制id的資料庫欄位部分,
我想要針對該檔案設定和註冊頁面一樣,有25字元的限制。

麻煩心靈大大了,感謝!

發表於 : 2007-03-25 22:40
nightwinded
hollowaysxp 寫:資料庫表phpbb_users
找到
欄位username
型態varchar(25)

所以使用者名稱限制25個字元是在這裡限制。
才會產生亂碼。
因為中文為2個字元。
25 / 2= 12 ........ 1
所以最後一個中文字是用1個字元再裝,所以產生亂碼。
這一個方法就是修改表格內的字元最大長度。

至於改了之後會有問題存在嗎?我也不知道 :mrgreen:
我不想改資料庫欄位啦 :cry:

發表於 : 2007-03-26 00:42
nightwinded
補充:

前兩天因為某些會員id無法註冊(例如:惠),因此我採用心靈大大的改法:
http://phpbb-tw.net/phpbb/viewtopic.php?p=226438#226438

如此做不曉得是否為亂碼問題發生的原因呢?

Re: [問題]會員改名後,因長度過長,導致亂碼問題

發表於 : 2007-03-26 06:23
心靈捕手
nightwinded 寫:
心靈捕手 寫:實在看不懂您的問題是甚麼?

既然您知道 '原本註冊的欄位本就限制25字元了'
那麼怎麼會有這個問題呢? :-?
'若我要限制會員更改名字時,一樣有25字元的限制,應該改那個檔案呢?'
抱歉,我也覺得寫的有點亂 :-(

首先是會員的id產生亂碼的問題,
因為只有後半部有亂碼,所以確定是id過長。

解決方式有二,一是增加資料庫欄位長度(sql部分)、一是限制該輸入欄位(input form部分),
但基於會員id理應不會超過12位元,因此我不打算更改資料庫欄位,
而傾向限制欄位輸入的字元限制。

我的問題來了,當我翻註冊的程式頁面時,的確有25位元的限制,
因此可確定註冊時,註冊者是無法輸入超過25位元的id,
事實上這位玩家也是事後自行更改id才會導致亂碼發生。

我想知道的是,在個人資料修改的地方,主要是由那個程式控制id的資料庫欄位部分,
我想要針對該檔案設定和註冊頁面一樣,有25字元的限制。

麻煩心靈大大了,感謝!
基本上, 會員註冊時填寫會員名稱, 和註冊後修改會員名稱, 是使用同一個欄位.

雖然, 資料庫裡頭的 username 預設長度是 25 字元,
但是, 它和 '註冊的程式頁面時,的確有25位元的限制' 是不同的.
因為後者所限制的是 25 .

由於每個 utf-8 編碼的國字, 約佔 1~4 個字元不等,
因此可想而知, 當會員更改名稱時, 若字數過多, 則尾端恐怕會出現亂碼.
這個道理, 跟主題過長會導致亂碼產生的道理一樣.
http://phpbb-tw.net/phpbb/viewtopic.php?t=17959

以下的修改, 提供您參考:
#
#-----[ OPEN ]-----
#
templates/subSilver/profile_add_body.tpl

#
#-----[ FIND ]-----
#

代碼: 選擇全部

<td class="row2"><input type="text" class="post" style="width:200px" name="username" size="25" maxlength="25" value="{USERNAME}" /></td>
#
#-----[ REPLACE WITH ]-----
#

代碼: 選擇全部

<td class="row2"><input type="text" class="post" style="width:200px" name="username" size="25" maxlength="8" value="{USERNAME}" /></td>
#
#-----[ SAVE & CLOSE ]-----
#

ps.
如此修改後, 無論會員註冊時填寫會員名稱, 和註冊後修改會員名稱,
其會員名稱最大長度都只有 8 個字.

發表於 : 2007-03-26 09:56
nightwinded
修改後ok囉,可以限制輸入的id長度了,感謝心靈大大 :-D