1 頁 (共 1 頁)

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

發表於 : 2005-09-26 22:07
w2812451
之前搞了一下functions_validate.php
就是沒有辦法在註冊會員的時候,防止會員暱稱重複,只能檢查會員暱稱是否重複!

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

已解決嚕!感謝自己還有下面那位大大!

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

發表於 : 2005-09-26 23:09
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
請改用你所用的變數....^^

發表於 : 2005-09-26 23:43
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的部份而已

發表於 : 2005-09-27 06:32
w2812451
水~成功了~感謝~
目前在個人資料頁面也放上了!

現在的強烈功能有check user nickname是否重複
還有防止nickname重複輸入!

發表於 : 2005-09-27 20:00
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

發表於 : 2005-09-27 20:34
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

發表於 : 2005-09-27 21:16
w2812451
恩說的狠準!我就是放在$mode == 'register' 的裡面!
不過下面的if 什麼empty我也是想放在那個裡面啦!
可是我覺得集中一點比較好~

至於個人資料頁面的我把它改成,無法再進行修正,記跟帳號一樣!
如果要修正就通知管理員吧~(說這幹麻ˊˋ)

發表於 : 2005-09-29 13:47
jeffyuan
奇怪~我試著更改~第一個方式無效
第2個則是錯誤訊息\r
請大大詳細教學一下

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

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

不是一個完整的MOD喔....
完全照著做是沒有用的....^^"""

發表於 : 2005-09-29 17:42
w2812451
說的沒錯!我只是照著那個方法去修正霸了~
所以說,如果要真的方法的話我可以提供,不過你要先說喔!

發表於 : 2005-09-29 21:53
jeffyuan
那麻煩請大大提供一下~謝謝