[問題] 如何訪只會員暱稱重複?(已解決)

phpBB 2 MOD Support
無論是官方或非官方認證之外掛,安裝與使用問題討論。
(發表文章請按照公告格式發表,違者砍文)

版主: 版主管理群

主題已鎖定
w2812451
星球公民
星球公民
文章: 255
註冊時間: 2005-07-16 21:38

[問題] 如何訪只會員暱稱重複?(已解決)

文章 w2812451 »

之前搞了一下functions_validate.php
就是沒有辦法在註冊會員的時候,防止會員暱稱重複,只能檢查會員暱稱是否重複!

意思就是說無法防止會員的暱稱重複就對了!
不知道哪一位大大能提供方法~

已解決嚕!感謝自己還有下面那位大大!
最後由 w2812451 於 2005-09-27 21:18 編輯,總共編輯了 1 次。
頭像
hentaibbc
版面管理員
版面管理員
文章: 342
註冊時間: 2005-09-01 18:01

Re: [問題] 如何訪只會員暱稱重複?

文章 hentaibbc »

w2812451 寫:之前搞了一下functions_validate.php
就是沒有辦法在註冊會員的時候,防止會員暱稱重複,只能檢查會員暱稱是否重複!

意思就是說無法防止會員的暱稱重複就對了!
不知道哪一位大大能提供方法~
我提供一個防止重複的方式
不過....不是改functions_validate.php就是了

代碼: 選擇全部

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

#
#-----[ FIND ]---------------------------------------------------
#
	if ( !$error )
	{
		if ( $avatar_sql == '' )

#
#-----[ BEFORE, ADD ]-----------------------------------------
#
	// nickname check
	$sql = "SELECT * FROM ". USERS_TABLE ." WHERE user_interests ='". $interests ."'";
	if ( $result = $db->sql_query($sql) )
	{
		if ( $row = $db->sql_fetchrow($result) )
		{
			if ( $row['user_id'] !='' && $row['user_id'] != '-1' )
			{
				$error = TRUE;
				$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Usernickname_taken']; 					
			}
		}
	}
	// nickname check

#
#-----[ OPEN ]-------------------------------------------------------
#
language/lang_chinese_traditional_taiwan/lang_main.php

#
#-----[ FIND ]-------------------------------------------------------
#
$lang['Username_taken'] = '很抱歉!! 您所選擇的會員名稱已被註冊使用';

#
#-----[ AFTER, ADD ]----------------------------------------------
#
// nickname check
$lang['Usernickname_taken'] = '很抱歉!! 您所選擇的暱稱已被使用';
// nickname check

#
#-----[ SAVE/CLOSE ALL FILES ]----------------------------------
#
#EoM
這樣你試試吧!!
其中....user_interests和$interests這兩個地方\r
請改用你所用的變數....^^
頭像
hentaibbc
版面管理員
版面管理員
文章: 342
註冊時間: 2005-09-01 18:01

文章 hentaibbc »

另外提供修改functions_validate.php的方式

代碼: 選擇全部

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

#
#-----[ FIND ]---------------------------------------------------
#
	if ( !$error )
	{
		if ( $avatar_sql == '' )

#
#-----[ BEFORE, ADD ]-----------------------------------------
#
	// nickname check
	$nickname_sql = '';
	if ( empty($user_nickname) )
	{
		// Error is already triggered, since one field is empty.
		$error = TRUE;
	}
	else if ( $username != $userdata['username'] || $mode == 'register')
	{
		if (strtolower($user_nickname) != strtolower($userdata['user_nickname']) || $mode == 'register')
		{
			$result = validate_nickname($user_nickname);
			if ( $result['error'] )
			{
				$error = TRUE;
				$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $result['error_msg'];
			}
		}

		if (!$error)
		{
			$nickname_sql = "user_nickname = '" . str_replace("\'", "''", $user_nickname) . "', ";
		}
	}
	// nickname check


#
#-----[ OPEN ]-------------------------------------------------------
#
language/lang_chinese_traditional_taiwan/lang_main.php

#
#-----[ FIND ]-------------------------------------------------------
#
$lang['Username_taken'] = '很抱歉!! 您所選擇的會員名稱已被註冊使用';

#
#-----[ AFTER, ADD ]----------------------------------------------
#
// nickname check
$lang['Usernickname_taken'] = '很抱歉!! 您所選擇的暱稱已被使用';
// nickname check

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

#
#-----[ FIND ]--------------------------------------------------------
#
?>

#
#-----[ BEFORE, ADD ]----------------------------------------------
#
//
// Check to see if the nickname has been taken.
//
function validate_nickname($user_nickname)
{
	global $db, $lang, $userdata;

	// Remove doubled up spaces
	$username = preg_replace('#\s+#', ' ', trim($user_nickname)); 
	$username = phpbb_clean_username($user_nickname);
	
	$sql = "SELECT user_id 
		FROM " . USERS_TABLE . " 
		WHERE LOWER(user_nickname) = '" . strtolower($user_nickname) . "'";
	if ($result = $db->sql_query($sql))
	{
		if ($row = $db->sql_fetchrow($result))
		{
			if ( $row['user_id'] != '' && $row['user_id'] != '-1' )
			{
				$db->sql_freeresult($result);
				return array('error' => true, 'error_msg' => $lang['Usernickname_taken']);
			}
		}
	}
	$db->sql_freeresult($result);
	
	return array('error' => false, 'error_msg' => '');
}

#
#-----[ SAVE/CLOSE ALL FILES ]----------------------------------
#
#EoM
你可能還必須針對一些部份做修改....
加油吧!!
我只是打上了check的部份而已
w2812451
星球公民
星球公民
文章: 255
註冊時間: 2005-07-16 21:38

文章 w2812451 »

水~成功了~感謝~
目前在個人資料頁面也放上了!

現在的強烈功能有check user nickname是否重複
還有防止nickname重複輸入!
w2812451
星球公民
星球公民
文章: 255
註冊時間: 2005-07-16 21:38

文章 w2812451 »

防止暱稱重複輸入+防止暱稱沒有輸入\r

代碼: 選擇全部

   // nickname check 
if ( $mode == 'register' )
{
      $user_nickname = trim(htmlspecialchars($HTTP_POST_VARS['nickname'])); 
      if (empty($user_nickname)) 
      { 
            $error = TRUE; 
            $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Nickname_empty'];
      } 
      $sql ="SELECT user_nickname 
      FROM " . USERS_TABLE . "
      WHERE user_nickname ='$user_nickname'";
      if (!($result = $db->sql_query($sql))) 
      { 
         message_die(GENERAL_ERROR, '無法送出查詢資料', '', __LINE__, __FILE__, $sql); 
      } 
      $sql_username = $db->sql_fetchrow($result); 
      if ($sql_username) 
      { 
            $error = TRUE; 
            $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Nickname_taken'];                 
         } 
}
   // nickname check
頭像
hentaibbc
版面管理員
版面管理員
文章: 342
註冊時間: 2005-09-01 18:01

文章 hentaibbc »

w2812451 寫:防止暱稱沒有輸入
這個其實只要修改以下部份就可以了

代碼: 選擇全部

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

#
#-----[ FIND ]---------------------------------------------------
#
if ( empty($username) || empty($new_password) || empty($password_confirm) || empty($email) )

#
#-----[ REPLACE ]----------------------------------------------
#
if ( empty($username) || empty($new_password) || empty($password_confirm) || empty($email) || empty($user_nickname) )

#
#-----[ SAVE/CLOSE FILE ]------------------------------------
#
#EoM
這樣就可以了....
不過....這種改法應該要看你前面的程式碼怎麼用....
不然可能會沒作用...Orz
w2812451
星球公民
星球公民
文章: 255
註冊時間: 2005-07-16 21:38

文章 w2812451 »

恩說的狠準!我就是放在$mode == 'register' 的裡面!
不過下面的if 什麼empty我也是想放在那個裡面啦!
可是我覺得集中一點比較好~

至於個人資料頁面的我把它改成,無法再進行修正,記跟帳號一樣!
如果要修正就通知管理員吧~(說這幹麻ˊˋ)
jeffyuan
星球公民
星球公民
文章: 173
註冊時間: 2005-04-21 22:47

文章 jeffyuan »

奇怪~我試著更改~第一個方式無效
第2個則是錯誤訊息\r
請大大詳細教學一下
頭像
hentaibbc
版面管理員
版面管理員
文章: 342
註冊時間: 2005-09-01 18:01

文章 hentaibbc »

jeffyuan 寫:奇怪~我試著更改~第一個方式無效
第2個則是錯誤訊息\r
請大大詳細教學一下
我寫的那部分...
因為並不是一個完整的MOD....
變數的部分必須依你的個人設定作更改\r

所以...我寫的東西....
只是解決w2812451的問題罷了...

不是一個完整的MOD喔....
完全照著做是沒有用的....^^"""
w2812451
星球公民
星球公民
文章: 255
註冊時間: 2005-07-16 21:38

文章 w2812451 »

說的沒錯!我只是照著那個方法去修正霸了~
所以說,如果要真的方法的話我可以提供,不過你要先說喔!
jeffyuan
星球公民
星球公民
文章: 173
註冊時間: 2005-04-21 22:47

文章 jeffyuan »

那麻煩請大大提供一下~謝謝
主題已鎖定

回到「外掛問題討論」