phpcms2008實(shí)現(xiàn)特殊郵箱可重復(fù)注冊(cè)
首先來說明一下當(dāng)我們要注冊(cè)會(huì)員的時(shí)候填入郵箱后當(dāng)鼠標(biāo)離開文本框的時(shí)候他是利用ajax來調(diào)用判斷用戶的email是否以經(jīng)被注冊(cè)了,這要打開他的模版文件,home/templates/member/register.html在這個(gè)頁面中我們可以看到:<input name="memberinfo[email]" type="text" style="ime-mode:disabled" require="true" datatype="email|ajax" url="{$M[url]}register.php?action=checkemail" msg="郵件格式不正確|" id="email" size="30" />這么一段代碼,從這里我們可以看到他要調(diào)用的是register.php頁面,其中傳遞了一個(gè)參數(shù)是action=checkemail那么我們?nèi)egister.php頁面,在這個(gè)頁面中我們可以找到當(dāng)action=checkemail時(shí)他所執(zhí)行的代碼:case 'checkemail':
if(!is_email($value))
{
exit($LANG['input_valid_email']);
}
elseif(!$M['allowemailduplicate'] && $member->email_exists($value))
{
exit($member->msg());
}
else
{
exit('success');
}
break;
case 'regagreement':
exit($M['reglicense']);
break;
從這里可以看出他執(zhí)行查詢郵件是否以被注冊(cè)了的代碼是elseif(!$M['allowemailduplicate'] && $member->email_exists($value))
也就是調(diào)用的memaber.class.php這個(gè)類中的email_exists這個(gè)方法,所以我們只要對(duì)這個(gè)方法進(jìn)行二次開發(fā)就可以了。
現(xiàn)在我們把這個(gè)方法改為:
function email_exists($email, $userid = '')
{
/** 二次開發(fā)目的:滿足會(huì)員注冊(cè)有些特定郵箱可以重復(fù)注冊(cè)
* */
$debar_email_a=array();
$debar_email_a=explode('|',DEBAR_EMAIL);
$result = $this->db->get_one("SELECT userid,email FROM $this->table_cache WHERE email='$email' AND userid!='$userid'");
if($result && !in_array($result[email],$debar_email_a))
{
$this->msg = 'have_used_change_one_email';
return true;
}
return false;
/*
* 二次開發(fā)結(jié)束
* */
}
DEBAR_EMAIL 這個(gè)是我們定義的一個(gè)常量,我把他放在了config.inc.php這個(gè)文件中,他的里邊存的值是這樣子的:
//在會(huì)員注冊(cè)中充許重復(fù)注冊(cè)的郵箱
define('DEBAR_EMAIL','wfwl@126.com|wf0536@126.com');
這里邊就是存儲(chǔ)著你可以重復(fù)注冊(cè)的郵箱。
說到這里我們應(yīng)該明白后邊的是怎么做的了。
備注:如果有更好的方法請(qǐng)貼出來共同分享
QQ:597342373
posted on 2009-08-28 11:17 丁克設(shè)計(jì) 閱讀(231) 評(píng)論(0) 編輯 收藏 所屬分類: phpcms2008技術(shù)文檔