#################################################
## 修正製作: 不亦快哉 (Scorpion) 於 2005.06.01
## 郵件信箱:
formosa@ms20.url.com.tw
## 論 壇:
http://ibtaiwan.com/ipb/index.php
#################################################
2005.06.01 初修
phpBB 2.0.15 多國語言 & 其他問題修正
前言:
本文件內容禁止轉貼,但是可以將此文件連結散播給有需要的人,請他到以下
網址觀看此文件:
http://ibtaiwan.com/doc/phpBB2015_multilang.html
http://myweb.hinet.net/home1/ibf/doc/ph ... ilang.html
http://home.pchome.com.tw/enjoy/roseman ... ilang.html
由於我本身並沒有用 phpBB2,所以很少關注它,算算距離 phpBB 2.0.4 修正
至今已然兩年多了,真是白駒過隙、烏飛兔走。
本次採用的修正方法與以往不同,是以一段自寫的 PHP 函式 dohtmlspecialchars()
來取代 PHP 內定函式 htmlspecialchars(),此法以前曾在 vBulletin 2.x 上使用
過,但有做過改進,更為嚴謹,優點是可以移植到其他有多國語言問題的 PHP 程式,
只要該程式的多國語言問題是因為大量使用 htmlspecialchars() 而導致,均可適用,
並且若有未修正到的地方,使用者可以自行輕易地解決。
如果您是新安裝、剛升級或修改之後有問題或懶惰,可下載此修改過的檔案:
http://ibtaiwan.com/dl/phpBB2015_multilang.zip
http://myweb.hinet.net/home1/ibf/dl/php ... tilang.zip
此壓縮檔亦包含本修正文件 phpBB2015_multilang.html
本文件詳述的修正問題如下
1. 多國語言問題
2. 在
代碼: 選擇全部
標籤內某些中文字亂碼問題
3. 註冊名稱最後一個字若為「許功蓋閱淚珮...」等字,無法登入問題
4. 搜尋功能的空白字元 BUG
5. 註冊名稱長度問題 (注意:phpBB2015_multilang.zip 不含此修正)
開始修正:
多國語言問題
第一階段
首先,phpBB 2.0.15 對於發表的文章內容、私人訊息內容,基本上已經支援多國語言
的正確顯示,像是簡體字、日文、韓文,但是對於一些特殊符號、西歐字元...等等還
是有問題。
[code]如: © 顯示成 ©
Ý 顯示成 Ý
所以我們必須進一步地改善
includesfunctions_post.php
28 列
$html_entities_match = array('#&(?!(#[0-9]+;))#', '#<html_entities_match>> 修改 >> 長度/集合
將 25 數值改大一些
若是全新安裝 phpBB2,在安裝之前可以先開啟
installschemasmysql_schema.sql
尋找
username varchar(25) NOT NULL
更改 25 數值
這樣安裝後即不用進入資料庫手動修改。
二、
開啟以下各檔案,更改 25 數值
includesfunctions.php
80 列
$username = substr(dohtmlspecialchars(str_replace("'", "'", trim($username))), 0, 25);
includesfunctions_validate.php
35 列
$username = substr(str_replace("'", "'", $username), 0, 25);
includesusercp_register.php
544 列
'USERNAME' => preg_replace($unhtml_specialchars_match, $unhtml_specialchars_replace, substr(str_replace("'", "'", $username), 0, 25)),
655 列
'USERNAME' => preg_replace($unhtml_specialchars_match, $unhtml_specialchars_replace, substr(str_replace("'", "'", $username), 0, 25)),
677 列
'USERNAME' => preg_replace($unhtml_specialchars_match, $unhtml_specialchars_replace, substr(str_replace("'", "'", $username), 0, 25)),
709 列
'USERNAME' => preg_replace($unhtml_specialchars_match, $unhtml_specialchars_replace, substr(str_replace("'", "'", $username), 0, 25)),