第 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
那麻煩請大大提供一下~謝謝