[問題] 尋找一個外掛可以Check有沒有已使用的會員名稱‧
版主: 版主管理群
不一定可以,論壇垮了不關我的事!
代碼: 選擇全部
#
#-----[ 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 次。
我這的作法是依據心靈捕手的程式做修改\r
個人是覺得此處所取得的username還得再做一些適當的處理~
另外~
既然判斷已經在usercp_register.php裡了
那就直接利用validate_username()來判斷就好\r
這樣也可以省掉一些程式碼\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忘了考慮您還有開啟visual confirmation
試看看再加入底下的程式碼\r
試看看再加入底下的程式碼\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聽您這麼說, 實在是不敢擔!神川小羽 寫:不愧是高手一看到~倉木麻衣~學長跟心靈捕手學長巧妙的修改以及手法
在程式上十分的嚴謹,果然是行家一出手便知有沒有。
我只是引用您設計的語法而已, 班門弄斧, 請勿見笑!
倒是 ~倉木麻衣~ 兄當真是學有專精.
原本我還以為, 上頭我貼出的語法已經夠用了;
但是, 今天在嘗試安裝另外一個外掛
Delete_Self_Checkbox_in_Profile_103a.mod 時,
卻發生了錯誤, 情形如下:
當我使用測試帳號, 要執行刪除自己帳號的命令時,
卻一直出現: " 很抱歉!! 您所選擇的會員名稱已被註冊使用" 的訊息.
誠如 ~倉木麻衣~ 兄所言:
目前, 我的論壇已經改採 ~倉木麻衣~ 兄所修正的語法.所取得的username還得再做一些適當的處理
ps.
如果大家對上述外掛也有興趣,
那麼請參考這裡下載:
http://www.phpbb.com/phpBB/viewtopic.php?t=135876



