[問題] 尋找一個外掛可以Check有沒有已使用的會員名稱‧

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

版主: 版主管理群

vaio
星球公民
星球公民
文章: 133
註冊時間: 2004-03-18 16:03

文章 vaio »

好呀,多謝大大‧
DL
竹貓忠實會員
竹貓忠實會員
文章: 717
註冊時間: 2005-03-05 15:29

文章 DL »

仲有呀...唔好狂寫廣東話呀...人地唔明架...
vaio
星球公民
星球公民
文章: 133
註冊時間: 2004-03-18 16:03

文章 vaio »

對不起大大,小弟知道了‧
DL
竹貓忠實會員
竹貓忠實會員
文章: 717
註冊時間: 2005-03-05 15:29

文章 DL »

不一定可以,論壇垮了不關我的事!

代碼: 選擇全部

# 
#-----[ Open ]----- 
# 
templates/YOUR_THEME/profile_add_body.tpl 

# 
#-----[ Find ]----- 
# 
<td class="row2"><input type="text" class="post" style="width:200px" name="username" size="25" maxlength="25" value="{USERNAME}" /></td> 

# 
#-----[ Replace With ]----- 
# 
<td class="row2"><input type="text" class="post" style="width:200px" name="username" size="25" maxlength="25" value="{USERNAME}" /> 
<input type="submit" name="check_username" value="查詢該帳號是否已經有人使用?" class="liteoption" /></td>
<head>
<script language="javascript">
var wwinb = null;
function writeWinb(wwb) {
wwinb = window.open('','new','top=10,left=10,width=250,height=350');
var wdb = wwinb.document;
wdb.open();
wdb.write(wwb+'<br><br><a href="javascript:window.close()">關閉視窗</a>');
wdb.close();
}
</script> 
</head> 

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

# 
#-----[ Find ]----- 
# 
if ( 
   isset($HTTP_POST_VARS['submit']) || 
   isset($HTTP_POST_VARS['avatargallery']) || 
   isset($HTTP_POST_VARS['submitavatar']) || 
   isset($HTTP_POST_VARS['cancelavatar']) || 
   $mode == 'register' ) 
{ 

# 
#-----[ Replace With ]----- 
# 
if ( 
   isset($HTTP_POST_VARS['submit']) || 
   isset($HTTP_POST_VARS['check_username']) || 
   isset($HTTP_POST_VARS['avatargallery']) || 
   isset($HTTP_POST_VARS['submitavatar']) || 
   isset($HTTP_POST_VARS['cancelavatar']) || 
   $mode == 'register' ) 
{ 

# 
#-----[ Find ]----- 
# 
if ($mode == 'register' && ($userdata['session_logged_in'] || $username == $userdata['username'])) 
{ 
   message_die(GENERAL_MESSAGE, $lang['Username_taken'], '', __LINE__, __FILE__); 
} 

# 
#-----[ After Add ]----- 
# 
// 
//+ Check username 
// 
   if (isset($HTTP_POST_VARS['check_username'])) 
   { 
      $username = $HTTP_POST_VARS['username']; 
   } 
   if ($username) 
   { 
      $sql ="SELECT u.username 
      FROM " . USERS_TABLE . " u 
      WHERE u.username ='$username'"; 
      if (!($result = $db->sql_query($sql))) 
      { 
         message_die(GENERAL_ERROR, '無法送出查詢資料', '', __LINE__, __FILE__, $sql); 
      } 
      $sql_username = $db->sql_fetchrow($result); 
      if ($sql_username) 
      { 
       javascript:writeWinb($lang['Username_taken']);
      } 
      else 
      { 
       javascript:writeWinb($lang['Username_O']);   
      } 
   } 
else
{
javascript:writeWinb($lang['No_username']);
}
// 
//- Check username 
// 

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

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

# 
#-----[ After Add ]----- 
# 
$lang['Username_O'] = '恭喜您!! 您所選擇的會員名稱尚未有人使用'; 
$lang['No_username'] = '抱歉!! 但請必需輸入你欲註冊的會員名稱!!'; 

# 
#-----[ Save / Close All Files ]----- 
# 
# EoM 
最後由 DL 於 2005-05-18 18:31 編輯,總共編輯了 1 次。
vaio
星球公民
星球公民
文章: 133
註冊時間: 2004-03-18 16:03

文章 vaio »

請問怎樣可以加多一個Message通知使用者沒有填入任何資料呢?
~倉木麻衣~
竹貓忠實會員
竹貓忠實會員
文章: 1405
註冊時間: 2004-03-21 21:00

文章 ~倉木麻衣~ »

我這的作法是依據心靈捕手的程式做修改\r
個人是覺得此處所取得的username還得再做一些適當的處理~
另外~
既然判斷已經在usercp_register.php裡了
那就直接利用validate_username()來判斷就好\r
這樣也可以省掉一些程式碼\r

代碼: 選擇全部

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

#
#--------[ FIND ]----------------
#
//
// Check and initialize some variables if needed
//
if (
	isset($HTTP_POST_VARS['submit']) ||

#
#--------[ AFTER, ADD ]----------------
#
	isset($HTTP_POST_VARS['check_username']) ||

#
#--------[ FIND ]----------------
#
if ($mode == 'register' && ($userdata['session_logged_in'] || $username == $userdata['username']))
{
	message_die(GENERAL_MESSAGE, $lang['Username_taken'], '', __LINE__, __FILE__);
}

#
#--------[ AFTER, ADD ]----------------
#
// 
//+ Check username 
// 
	if (isset($HTTP_POST_VARS['check_username']))
	{
		$username = trim(htmlspecialchars($HTTP_POST_VARS['username']));
		if (empty($username))
		{
			$template->assign_block_vars('switch_checkname', array(
				'CHECKNAME' => $lang['Username_empty']));
		}
	}
	if ($username && isset($HTTP_POST_VARS['check_username']))
	{
		$checkname_result = validate_username($username);
		$template->assign_block_vars('switch_checkname', array(
			'CHECKNAME' => $checkname_result['error'] ? $lang['Username_taken'] : $lang['Username_nottaken']));
	}
//
//- Check username
//

#
#--------[ OPEN ]----------------
#
templates/您的風格/profile_add_body.tpl

#
#--------[ FIND ]----------------
#
<form action="{S_PROFILE_ACTION}" {S_FORM_ENCTYPE} method="post">

#
#--------[ BEFORE, ADD ]----------------
#
<!-- BEGIN switch_checkname -->
<Script Language="Javascript">
	window.alert('{switch_checkname.CHECKNAME}');
</Script>
<!-- END switch_checkname -->

#
#--------[ FIND ]----------------
#
		<td class="row2"><input type="text" class="post" style="width:200px" name="username" size="25" maxlength="25" value="{USERNAME}" /></td>
#
#--------[ REPLACE WITH ]----------------
#
		<td class="row2"><input type="text" class="post" style="width:200px" name="username" size="25" maxlength="25" value="{USERNAME}" /> 
<input type="submit" name="check_username" value="檢查帳號" class="liteoption" /></td>

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

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

#
#--------[ AFTER, ADD ]----------------
#
$lang['Username_nottaken'] = '恭喜您!! 您所選擇的會員名稱尚未有人使用';
$lang['Username_empty'] = '您必須輸入會員名稱';

#
#--------[ SAVE/CLOSE ALL FILES ]----------------
#
# EoM
DL
竹貓忠實會員
竹貓忠實會員
文章: 717
註冊時間: 2005-03-05 15:29

文章 DL »

蹦出式視窗比對話框好的...
~倉木麻衣~
竹貓忠實會員
竹貓忠實會員
文章: 1405
註冊時間: 2004-03-21 21:00

文章 ~倉木麻衣~ »

DL 寫:蹦出式視窗比對話框好的...
並不一定
您還要考慮使用者是否有安裝阻擋popup視窗的軟體
以及使用者所使用的瀏覽器特性\r
(例如KKMan預設阻擋popup)
神川小羽
調皮の小羽
調皮の小羽
文章: 1461
註冊時間: 2004-05-01 05:55
來自: 謎樣之筱語
聯繫:

文章 神川小羽 »

不愧是高手一看到~倉木麻衣~學長跟心靈捕手學長巧妙的修改以及手法
在程式上十分的嚴謹,果然是行家一出手便知有沒有 (:Y)
-.-
vaio
星球公民
星球公民
文章: 133
註冊時間: 2004-03-18 16:03

文章 vaio »

多謝"倉木麻衣"大大及其他大大的幫助,但不知為檢查多幾次就話我"賞試註册的次數太多,請稍後再試"‧請問有甚麼方法可以解決呢?
~倉木麻衣~
竹貓忠實會員
竹貓忠實會員
文章: 1405
註冊時間: 2004-03-21 21:00

文章 ~倉木麻衣~ »

忘了考慮您還有開啟visual confirmation
試看看再加入底下的程式碼\r

代碼: 選擇全部

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

#
#--------[ FIND ]----------------
#
		$sql = 'SELECT COUNT(session_id) AS attempts

#
#--------[ BEFORE, ADD ]----------------
#
		if (isset($HTTP_POST_VARS['check_username']))
		{
			$sql = 'DELETE FROM ' .  CONFIRM_TABLE . " 
				WHERE session_id ='" . $userdata['session_id'] . "'";
			if (!$db->sql_query($sql))
			{
				message_die(GENERAL_ERROR, 'Could not delete stale confirm data', '', __LINE__, __FILE__, $sql);
			}
		}

#
#--------[ SAVE/CLOSE ALL FILES ]----------------
#
# EoM
vaio
星球公民
星球公民
文章: 133
註冊時間: 2004-03-18 16:03

文章 vaio »

現在行了‧真的很多各位大大的幫助!
頭像
心靈捕手
默默耕耘的老師
默默耕耘的老師
文章: 8547
註冊時間: 2004-04-30 01:54
來自: Taiwan

文章 心靈捕手 »

神川小羽 寫:不愧是高手一看到~倉木麻衣~學長跟心靈捕手學長巧妙的修改以及手法
在程式上十分的嚴謹,果然是行家一出手便知有沒有 (:Y)
聽您這麼說, 實在是不敢擔! :oops:

我只是引用您設計的語法而已, 班門弄斧, 請勿見笑!
倒是 ~倉木麻衣~ 兄當真是學有專精.

原本我還以為, 上頭我貼出的語法已經夠用了;
但是, 今天在嘗試安裝另外一個外掛
Delete_Self_Checkbox_in_Profile_103a.mod 時,
卻發生了錯誤, 情形如下:

當我使用測試帳號, 要執行刪除自己帳號的命令時,
卻一直出現: " 很抱歉!! 您所選擇的會員名稱已被註冊使用" 的訊息.


誠如 ~倉木麻衣~ 兄所言:
所取得的username還得再做一些適當的處理
目前, 我的論壇已經改採 ~倉木麻衣~ 兄所修正的語法.

ps.
如果大家對上述外掛也有興趣,
那麼請參考這裡下載:
http://www.phpbb.com/phpBB/viewtopic.php?t=135876
施比受有福,祝福您好運! ^_^
歡迎光臨★★心靈捕手★★ :: 討論區
https://wang5555.dnsfor.me/phpBB3/
主題已鎖定

回到「外掛問題討論」