[問題]會員註冊問題(特別的國字不能註冊!?)[已解決]

phpBB Installation & Usage Support
phpBB 2 安裝於各類型作業平台之問題討論;外掛問題,請到相關版面依發問格式發表!
(發表文章請按照公告格式發表,違者砍文)

版主: 版主管理群

版面規則
本區是討論關於 phpBB 2.0.X 架設安裝上的問題,只要有安裝任何外掛,請到外掛討論相關版面按照公告格式發表。
(發表文章請按照公告格式發表,違者砍文)
主題已鎖定
blair520
星球普通子民
星球普通子民
文章: 18
註冊時間: 2006-02-03 01:37
來自: 邊疆地帶
聯繫:

[問題]會員註冊問題(特別的國字不能註冊!?)[已解決]

文章 blair520 »

●架設主機作業系統:Windows Xp
●上網方式: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
頭像
心靈捕手
默默耕耘的老師
默默耕耘的老師
文章: 8510
註冊時間: 2004-04-30 01:54
來自: Taiwan

文章 心靈捕手 »

系統訊息的意思是說 '沙漠裡不應該有北極熊' .

--
抱歉! 以上是在說冷笑話. :mrgreen:

--
我猜想:
應該是受到 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.
尚不明白, 如此做, 有無安全上的缺失, 請小心為之.
施比受有福,祝福您好運! ^_^
歡迎光臨★★心靈捕手★★ :: 討論區
https://wang5555.dnsfor.me/phpBB3/
blair520
星球普通子民
星球普通子民
文章: 18
註冊時間: 2006-02-03 01:37
來自: 邊疆地帶
聯繫:

文章 blair520 »

心靈捕手 寫:系統訊息的意思是說 '沙漠裡不應該有北極熊' .

--
抱歉! 以上是在說冷笑話. :mrgreen:

--
我猜想:
應該是受到 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.
尚不明白, 如此做, 有無安全上的缺失, 請小心為之.
感恩大大的回答~勞煩您了~真不好意思 :-D
最後由 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
blair520
星球普通子民
星球普通子民
文章: 18
註冊時間: 2006-02-03 01:37
來自: 邊疆地帶
聯繫:

大大我有找到可是那邊多了一個東西ㄝ...

文章 blair520 »

大大我有找到你寫的代碼可是那邊多了一個東西ㄝ...
心靈捕手 寫:系統訊息的意思是說 '沙漠裡不應該有北極熊' .

--
抱歉! 以上是在說冷笑話. :mrgreen:

--
我猜想:
應該是受到 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
blair520
星球普通子民
星球普通子民
文章: 18
註冊時間: 2006-02-03 01:37
來自: 邊疆地帶
聯繫:

><

文章 blair520 »

由於我前天才開始學做論壇
所以我問題會很多很多><"
還請大大們多多指教><
最後由 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
頭像
心靈捕手
默默耕耘的老師
默默耕耘的老師
文章: 8510
註冊時間: 2004-04-30 01:54
來自: Taiwan

文章 心靈捕手 »

不必!

以下是原始函式語法完整擷取:

代碼: 選擇全部

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' => '');
}
您所指的部份, 應該是在 '}' 之後吧!?
施比受有福,祝福您好運! ^_^
歡迎光臨★★心靈捕手★★ :: 討論區
https://wang5555.dnsfor.me/phpBB3/
blair520
星球普通子民
星球普通子民
文章: 18
註冊時間: 2006-02-03 01:37
來自: 邊疆地帶
聯繫:

啊~對不起><"

文章 blair520 »

眼睛脫窗了><"我把*/

加到\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
blair520
星球普通子民
星球普通子民
文章: 18
註冊時間: 2006-02-03 01:37
來自: 邊疆地帶
聯繫:

><"

文章 blair520 »

blair520 寫:眼睛脫窗了><"我把*/

加到\r

代碼: 選擇全部

return array('error' => false, 'error_msg' => '');
}
後面去了=..=+
加到後面去的錯誤是\r
會員管理->管理選項
會找不到網頁 :-D
非常感謝大大的教導~小弟會努力把論壇做好 :-D

小弟的濫論壇有時候會找不到網頁~
真的不知道為什麼會這樣子捏~空間的關係嗎? :-(
●架設主機作業系統:Windows XP
●快速架站程式:appserv-win32-2.3.0
●上網方式:ADSL
●安裝的程式:appserv-win32-2.3.0
● phpBB2 版本:竹貓星球phpBB-2.0.19 UTF-8
jeswang.tw
星球普通子民
星球普通子民
文章: 19
註冊時間: 2006-07-31 13:02

文章 jeswang.tw »

這段 mark 掉之後,如果有人用 Alt-255 輸入註冊,會發生什麼事? :?:
阿維
竹貓忠實會員
竹貓忠實會員
文章: 868
註冊時間: 2003-02-23 13:36
來自: 台南市

文章 阿維 »

心靈捕手 寫:系統訊息的意思是說 '沙漠裡不應該有北極熊' .

--
抱歉! 以上是在說冷笑話. :mrgreen:

--
我猜想:
應該是受到 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.
尚不明白, 如此做, 有無安全上的缺失, 請小心為之.
這個修正好像跟 Custom mass PM 1.4.7 其中一個的步驟有衝突

代碼: 選擇全部

# 
#-----[ OPEN ]------------------------------------------------ 
# 
includes/functions_validate.php 

# 
#-----[ FIND ]------------------------------------------------ 
# 
// Don't allow 
if (strstr(

# 
#-----[ IN-LINE FIND ]---------------------------------------- 
# 
, chr(160))

# 
#-----[ IN-LINE AFTER, ADD ]---------------------------------- 
# 
 || strstr($username, ';')
剛好是在註解的範圍內,請問該如何解決呢?
頭像
心靈捕手
默默耕耘的老師
默默耕耘的老師
文章: 8510
註冊時間: 2004-04-30 01:54
來自: Taiwan

文章 心靈捕手 »

JORDAN 寫:
心靈捕手 寫:系統訊息的意思是說 '沙漠裡不應該有北極熊' .

--
抱歉! 以上是在說冷笑話. :mrgreen:

--
我猜想:
應該是受到 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.
尚不明白, 如此做, 有無安全上的缺失, 請小心為之.
這個修正好像跟 Custom mass PM 1.4.7 其中一個的步驟有衝突

代碼: 選擇全部

# 
#-----[ 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' 的功能.

建議您:
忽略它 (安裝 'Custom mass PM 1.4.7' 時, 省掉這個修改).
施比受有福,祝福您好運! ^_^
歡迎光臨★★心靈捕手★★ :: 討論區
https://wang5555.dnsfor.me/phpBB3/
Fujirou
星球普通子民
星球普通子民
文章: 4
註冊時間: 2007-03-13 15:59

文章 Fujirou »

我最近也遇到這個問題

後來是用mb_strstr()取代strstr()
在mb_strstr()之前要多加一行mb_internal_encoding("UTF-8");

沒辦法註冊的問題就沒有出現了
不過還沒有仔細測試過,不知道會不會產生其他問題
hsientsung
星球公民
星球公民
文章: 42
註冊時間: 2006-04-06 01:05

文章 hsientsung »

Fujirou 寫:我最近也遇到這個問題

後來是用mb_strstr()取代strstr()
在mb_strstr()之前要多加一行mb_internal_encoding("UTF-8");

沒辦法註冊的問題就沒有出現了
不過還沒有仔細測試過,不知道會不會產生其他問題

想請問依照您這樣子的修改方式,您目前還有出現任何問題嗎?
或者之後還有出現任何問題嗎?
善用搜尋是很棒的選擇,但是~~
爬文好辛苦啊~ (╯▔︹▔)╯~╘═╛
Fujirou
星球普通子民
星球普通子民
文章: 4
註冊時間: 2007-03-13 15:59

文章 Fujirou »

hsientsung 寫:
Fujirou 寫:我最近也遇到這個問題

後來是用mb_strstr()取代strstr()
在mb_strstr()之前要多加一行mb_internal_encoding("UTF-8");

沒辦法註冊的問題就沒有出現了
不過還沒有仔細測試過,不知道會不會產生其他問題

想請問依照您這樣子的修改方式,您目前還有出現任何問題嗎?
或者之後還有出現任何問題嗎?
改了之後,大約四、五個人註冊,目前還沒有聽到有問題回報。
頭像
Hans Tsai
星球普通子民
星球普通子民
文章: 20
註冊時間: 2006-04-18 10:41

文章 Hans Tsai »

分享一下我處理這個問題的結果
基本上是正常的
幾個會碰到問題的字

熊 堡 砂 等等...
經修改後都可正常使用
我處理的方法

#
#-----[ 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天
註冊近百人
都沒發生過問題
8-)
主題已鎖定

回到「phpBB 2 安裝與使用」