[問題]會員註冊問題(特別的國字不能註冊!?)[已解決]
版主: 版主管理群
版面規則
本區是討論關於 phpBB 2.0.X 架設安裝上的問題,只要有安裝任何外掛,請到外掛討論相關版面按照公告格式發表。
(發表文章請按照公告格式發表,違者砍文)
本區是討論關於 phpBB 2.0.X 架設安裝上的問題,只要有安裝任何外掛,請到外掛討論相關版面按照公告格式發表。
(發表文章請按照公告格式發表,違者砍文)
[問題]會員註冊問題(特別的國字不能註冊!?)[已解決]
●架設主機作業系統:Windows Xp
●上網方式:ADSL
●phpBB2 版本:竹貓星球phpBB-2.0.19 UTF-8
●phpBB2 連結網址: http://blair80081.php2h.com/phpBB2/
●已安裝外掛:無\r
我有一位會員要註冊
他想要用的ID是 沙漠北極熊
結果他註冊時系統卻告訴他
【很抱歉!! 會員名稱內不得包含非法字元, 例如: ''】
之後我幫他註冊也是一樣出現↑
請問竹貓的好心腸的大大們幫幫小弟我>"<
到底問題出在哪裡呢?>"<非常的感謝您
●上網方式:ADSL
●phpBB2 版本:竹貓星球phpBB-2.0.19 UTF-8
●phpBB2 連結網址: http://blair80081.php2h.com/phpBB2/
●已安裝外掛:無\r
我有一位會員要註冊
他想要用的ID是 沙漠北極熊
結果他註冊時系統卻告訴他
【很抱歉!! 會員名稱內不得包含非法字元, 例如: ''】
之後我幫他註冊也是一樣出現↑
請問竹貓的好心腸的大大們幫幫小弟我>"<
到底問題出在哪裡呢?>"<非常的感謝您
最後由 blair520 於 2006-02-06 22:33 編輯,總共編輯了 3 次。
●架設主機作業系統:Windows XP
●快速架站程式:appserv-win32-2.3.0
●上網方式:ADSL
●安裝的程式:appserv-win32-2.3.0
● phpBB2 版本:竹貓星球phpBB-2.0.19 UTF-8
●快速架站程式:appserv-win32-2.3.0
●上網方式:ADSL
●安裝的程式:appserv-win32-2.3.0
● phpBB2 版本:竹貓星球phpBB-2.0.19 UTF-8
系統訊息的意思是說 '沙漠裡不應該有北極熊' .
--
抱歉! 以上是在說冷笑話.
--
我猜想:
應該是受到 utf-8 編碼的影響, 產生了系統不允許的字元.
以下的修改, 提供您參考:
#
#-----[ OPEN ]-----
#
includes/functions_validate.php
#
#-----[ FIND ]-----
#
#
#-----[ REPLACE WITH ]-----
#
#
#-----[ SAVE & CLOSE ]-----
#
#EoM
ps.
尚不明白, 如此做, 有無安全上的缺失, 請小心為之.
--
抱歉! 以上是在說冷笑話.
--
我猜想:
應該是受到 utf-8 編碼的影響, 產生了系統不允許的字元.
以下的修改, 提供您參考:
#
#-----[ OPEN ]-----
#
includes/functions_validate.php
#
#-----[ FIND ]-----
#
代碼: 選擇全部
// Don't allow " and ALT-255 in username.
if (strstr($username, '"') || strstr($username, '"') || strstr($username, chr(160)))
{
return array('error' => true, 'error_msg' => $lang['Username_invalid']);
}
#-----[ REPLACE WITH ]-----
#
代碼: 選擇全部
/*// Don't allow " and ALT-255 in username.
if (strstr($username, '"') || strstr($username, '"') || strstr($username, chr(160)))
{
return array('error' => true, 'error_msg' => $lang['Username_invalid']);
}*/
#-----[ SAVE & CLOSE ]-----
#
#EoM
ps.
尚不明白, 如此做, 有無安全上的缺失, 請小心為之.
感恩大大的回答~勞煩您了~真不好意思心靈捕手 寫:系統訊息的意思是說 '沙漠裡不應該有北極熊' .
--
抱歉! 以上是在說冷笑話.
--
我猜想:
應該是受到 utf-8 編碼的影響, 產生了系統不允許的字元.
以下的修改, 提供您參考:
#
#-----[ OPEN ]-----
#
includes/functions_validate.php
#
#-----[ FIND ]-----
##代碼: 選擇全部
// Don't allow " and ALT-255 in username. if (strstr($username, '"') || strstr($username, '"') || strstr($username, chr(160))) { return array('error' => true, 'error_msg' => $lang['Username_invalid']); }
#-----[ REPLACE WITH ]-----
##代碼: 選擇全部
/*// Don't allow " and ALT-255 in username. if (strstr($username, '"') || strstr($username, '"') || strstr($username, chr(160))) { return array('error' => true, 'error_msg' => $lang['Username_invalid']); }*/
#-----[ SAVE & CLOSE ]-----
#
#EoM
ps.
尚不明白, 如此做, 有無安全上的缺失, 請小心為之.
最後由 blair520 於 2006-02-06 22:31 編輯,總共編輯了 1 次。
●架設主機作業系統:Windows XP
●快速架站程式:appserv-win32-2.3.0
●上網方式:ADSL
●安裝的程式:appserv-win32-2.3.0
● phpBB2 版本:竹貓星球phpBB-2.0.19 UTF-8
●快速架站程式:appserv-win32-2.3.0
●上網方式:ADSL
●安裝的程式:appserv-win32-2.3.0
● phpBB2 版本:竹貓星球phpBB-2.0.19 UTF-8
大大我有找到可是那邊多了一個東西ㄝ...
大大我有找到你寫的代碼可是那邊多了一個東西ㄝ...
後面多了一個
是\r
請問這個有要緊嗎?還是在後面跟您說的一樣加上*/呢?
在心靈捕手 寫:系統訊息的意思是說 '沙漠裡不應該有北極熊' .
--
抱歉! 以上是在說冷笑話.
--
我猜想:
應該是受到 utf-8 編碼的影響, 產生了系統不允許的字元.
以下的修改, 提供您參考:
#
#-----[ OPEN ]-----
#
includes/functions_validate.php
#
#-----[ FIND ]-----
##代碼: 選擇全部
// Don't allow " and ALT-255 in username. if (strstr($username, '"') || strstr($username, '"') || strstr($username, chr(160))) { return array('error' => true, 'error_msg' => $lang['Username_invalid']); }
#-----[ REPLACE WITH ]-----
##代碼: 選擇全部
/*// Don't allow " and ALT-255 in username. if (strstr($username, '"') || strstr($username, '"') || strstr($username, chr(160))) { return array('error' => true, 'error_msg' => $lang['Username_invalid']); }*/
#-----[ SAVE & CLOSE ]-----
#
#EoM
ps.
尚不明白, 如此做, 有無安全上的缺失, 請小心為之.
代碼: 選擇全部
['Username_invalid']);
是\r
代碼: 選擇全部
return array('error' => false, 'error_msg' => '');
最後由 blair520 於 2006-02-06 22:31 編輯,總共編輯了 1 次。
●架設主機作業系統:Windows XP
●快速架站程式:appserv-win32-2.3.0
●上網方式:ADSL
●安裝的程式:appserv-win32-2.3.0
● phpBB2 版本:竹貓星球phpBB-2.0.19 UTF-8
●快速架站程式:appserv-win32-2.3.0
●上網方式:ADSL
●安裝的程式:appserv-win32-2.3.0
● phpBB2 版本:竹貓星球phpBB-2.0.19 UTF-8
不必!
以下是原始函式語法完整擷取:
您所指的部份, 應該是在 '}' 之後吧!?
以下是原始函式語法完整擷取:
代碼: 選擇全部
function validate_username($username)
{
global $db, $lang, $userdata;
// Remove doubled up spaces
$username = preg_replace('#\s+#', ' ', trim($username));
$username = phpbb_clean_username($username);
$sql = "SELECT username
FROM " . USERS_TABLE . "
WHERE LOWER(username) = '" . strtolower($username) . "'";
if ($result = $db->sql_query($sql))
{
while ($row = $db->sql_fetchrow($result))
{
if (($userdata['session_logged_in'] && $row['username'] != $userdata['username']) || !$userdata['session_logged_in'])
{
$db->sql_freeresult($result);
return array('error' => true, 'error_msg' => $lang['Username_taken']);
}
}
}
$db->sql_freeresult($result);
$sql = "SELECT group_name
FROM " . GROUPS_TABLE . "
WHERE LOWER(group_name) = '" . strtolower($username) . "'";
if ($result = $db->sql_query($sql))
{
if ($row = $db->sql_fetchrow($result))
{
$db->sql_freeresult($result);
return array('error' => true, 'error_msg' => $lang['Username_taken']);
}
}
$db->sql_freeresult($result);
$sql = "SELECT disallow_username
FROM " . DISALLOW_TABLE;
if ($result = $db->sql_query($sql))
{
if ($row = $db->sql_fetchrow($result))
{
do
{
if (preg_match("#\b(" . str_replace("\*", ".*?", preg_quote($row['disallow_username'], '#')) . ")\b#i", $username))
{
$db->sql_freeresult($result);
return array('error' => true, 'error_msg' => $lang['Username_disallowed']);
}
}
while($row = $db->sql_fetchrow($result));
}
}
$db->sql_freeresult($result);
$sql = "SELECT word
FROM " . WORDS_TABLE;
if ($result = $db->sql_query($sql))
{
if ($row = $db->sql_fetchrow($result))
{
do
{
if (preg_match("#\b(" . str_replace("\*", ".*?", preg_quote($row['word'], '#')) . ")\b#i", $username))
{
$db->sql_freeresult($result);
return array('error' => true, 'error_msg' => $lang['Username_disallowed']);
}
}
while ($row = $db->sql_fetchrow($result));
}
}
$db->sql_freeresult($result);
// Don't allow " and ALT-255 in username.
if (strstr($username, '"') || strstr($username, '"') || strstr($username, chr(160)))
{
return array('error' => true, 'error_msg' => $lang['Username_invalid']);
}
return array('error' => false, 'error_msg' => '');
}
><"
加到後面去的錯誤是\r
會員管理->管理選項
會找不到網頁
非常感謝大大的教導~小弟會努力把論壇做好
小弟的濫論壇有時候會找不到網頁~
真的不知道為什麼會這樣子捏~空間的關係嗎?
●架設主機作業系統:Windows XP
●快速架站程式:appserv-win32-2.3.0
●上網方式:ADSL
●安裝的程式:appserv-win32-2.3.0
● phpBB2 版本:竹貓星球phpBB-2.0.19 UTF-8
●快速架站程式:appserv-win32-2.3.0
●上網方式:ADSL
●安裝的程式:appserv-win32-2.3.0
● phpBB2 版本:竹貓星球phpBB-2.0.19 UTF-8
這個修正好像跟 Custom mass PM 1.4.7 其中一個的步驟有衝突心靈捕手 寫:系統訊息的意思是說 '沙漠裡不應該有北極熊' .
--
抱歉! 以上是在說冷笑話.
--
我猜想:
應該是受到 utf-8 編碼的影響, 產生了系統不允許的字元.
以下的修改, 提供您參考:
#
#-----[ OPEN ]-----
#
includes/functions_validate.php
#
#-----[ FIND ]-----
##代碼: 選擇全部
// Don't allow " and ALT-255 in username. if (strstr($username, '"') || strstr($username, '"') || strstr($username, chr(160))) { return array('error' => true, 'error_msg' => $lang['Username_invalid']); }
#-----[ REPLACE WITH ]-----
##代碼: 選擇全部
/*// Don't allow " and ALT-255 in username. if (strstr($username, '"') || strstr($username, '"') || strstr($username, chr(160))) { return array('error' => true, 'error_msg' => $lang['Username_invalid']); }*/
#-----[ SAVE & CLOSE ]-----
#
#EoM
ps.
尚不明白, 如此做, 有無安全上的缺失, 請小心為之.
代碼: 選擇全部
#
#-----[ OPEN ]------------------------------------------------
#
includes/functions_validate.php
#
#-----[ FIND ]------------------------------------------------
#
// Don't allow
if (strstr(
#
#-----[ IN-LINE FIND ]----------------------------------------
#
, chr(160))
#
#-----[ IN-LINE AFTER, ADD ]----------------------------------
#
|| strstr($username, ';')
這個修正, 不會影響 'Custom mass PM 1.4.7' 的功能.JORDAN 寫:這個修正好像跟 Custom mass PM 1.4.7 其中一個的步驟有衝突心靈捕手 寫:系統訊息的意思是說 '沙漠裡不應該有北極熊' .
--
抱歉! 以上是在說冷笑話.
--
我猜想:
應該是受到 utf-8 編碼的影響, 產生了系統不允許的字元.
以下的修改, 提供您參考:
#
#-----[ OPEN ]-----
#
includes/functions_validate.php
#
#-----[ FIND ]-----
##代碼: 選擇全部
// Don't allow " and ALT-255 in username. if (strstr($username, '"') || strstr($username, '"') || strstr($username, chr(160))) { return array('error' => true, 'error_msg' => $lang['Username_invalid']); }
#-----[ REPLACE WITH ]-----
##代碼: 選擇全部
/*// Don't allow " and ALT-255 in username. if (strstr($username, '"') || strstr($username, '"') || strstr($username, chr(160))) { return array('error' => true, 'error_msg' => $lang['Username_invalid']); }*/
#-----[ SAVE & CLOSE ]-----
#
#EoM
ps.
尚不明白, 如此做, 有無安全上的缺失, 請小心為之.
剛好是在註解的範圍內,請問該如何解決呢?代碼: 選擇全部
# #-----[ OPEN ]------------------------------------------------ # includes/functions_validate.php # #-----[ FIND ]------------------------------------------------ # // Don't allow if (strstr( # #-----[ IN-LINE FIND ]---------------------------------------- # , chr(160)) # #-----[ IN-LINE AFTER, ADD ]---------------------------------- # || strstr($username, ';')
建議您:
忽略它 (安裝 'Custom mass PM 1.4.7' 時, 省掉這個修改).
-
- 星球公民
- 文章: 42
- 註冊時間: 2006-04-06 01:05
Fujirou 寫:我最近也遇到這個問題
後來是用mb_strstr()取代strstr()
在mb_strstr()之前要多加一行mb_internal_encoding("UTF-8");
沒辦法註冊的問題就沒有出現了
不過還沒有仔細測試過,不知道會不會產生其他問題
想請問依照您這樣子的修改方式,您目前還有出現任何問題嗎?
或者之後還有出現任何問題嗎?
善用搜尋是很棒的選擇,但是~~
爬文好辛苦啊~ (╯▔︹▔)╯~╘═╛
爬文好辛苦啊~ (╯▔︹▔)╯~╘═╛
分享一下我處理這個問題的結果
基本上是正常的
幾個會碰到問題的字
如
熊 堡 砂 等等...
經修改後都可正常使用
我處理的方法
#
#-----[ OPEN ]-----
#
includes/functions_validate.php
#
#-----[ FIND ]-----
#
#
#-----[ After Add ]-----
#
#
#-----[ FIND ]-----
#
#
#-----[ REPLACE WITH ]-----
#
#
#-----[ SAVE & CLOSE ]-----
#
#EoM
目前已經用了7天
註冊近百人
都沒發生過問題
基本上是正常的
幾個會碰到問題的字
如
熊 堡 砂 等等...
經修改後都可正常使用
我處理的方法
#
#-----[ OPEN ]-----
#
includes/functions_validate.php
#
#-----[ FIND ]-----
#
代碼: 選擇全部
// Don't allow " and ALT-255 in username.
#-----[ After Add ]-----
#
代碼: 選擇全部
mb_internal_encoding("UTF-8");
#-----[ FIND ]-----
#
代碼: 選擇全部
if (strstr($username, '"') || strstr($username, '"') || strstr($username, chr(160)))
#-----[ REPLACE WITH ]-----
#
代碼: 選擇全部
if (mb_strstr($username, '"') || mb_strstr($username, '"') || mb_strstr($username, chr(160)))
#-----[ SAVE & CLOSE ]-----
#
#EoM
目前已經用了7天
註冊近百人
都沒發生過問題