關(guān)閉discuzX3.2注冊(cè)頁面的注冊(cè)郵箱驗(yàn)證-創(chuàng)新互聯(lián)

論壇升級(jí)后發(fā)現(xiàn)注冊(cè)用戶在輸入任何郵箱email時(shí),一直提示email 地址無效.用firephp跟蹤發(fā)現(xiàn):隨機(jī)生成的email的后綴是@localhost!

我們提供的服務(wù)有:成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、劍河ssl等。為上千企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的劍河網(wǎng)站制作公司

找到原因,修改如下:

關(guān)閉discuzX3.2注冊(cè)頁面的注冊(cè)郵箱驗(yàn)證

//原來代碼if(empty($email) && $_G['setting']['forgeemail'])
{$_GET['email'] = $email = strtolower(random(6)).'@'.$_SERVER['HTTP_HOST'];
}//但是如果本地調(diào)試emai后綴就是@localhost,不符合郵箱的規(guī)則if(empty($email) && $_G['setting']['forgeemail'])
{$_GET['email'] = $email = strtolower(random(16)).'@'.'klaus.com';
}//增加了16位隨機(jī)碼,減少生成相同的郵箱概率;
//后綴固定,這樣就不提示'Email 地址無效'了!

關(guān)閉discuzX3.2注冊(cè)頁面的注冊(cè)郵箱驗(yàn)證

但是這個(gè)感覺太lower了,回到dz3.1以前的玩法是:

在DZ3.2以前的版本的后臺(tái)我們可以在全局——注冊(cè)與訪問——取消郵箱注冊(cè)必填如下圖:
關(guān)閉discuzX3.2注冊(cè)頁面的注冊(cè)郵箱驗(yàn)證

接下來就問題來了,Discuz官方團(tuán)隊(duì)可能也考慮到了這個(gè)問題,也許他們也像我這樣認(rèn)為這個(gè)地方在后臺(tái)出現(xiàn)沒多大必要,于是他們就在X3.2版本中更新了這個(gè)模塊,更新的結(jié)果我覺得應(yīng)該是這樣的:在后臺(tái)取消這個(gè)設(shè)置,但數(shù)據(jù)庫里面存儲(chǔ)的信息不變,而且在注冊(cè)的時(shí)候不再使用這個(gè)數(shù)據(jù)庫里面的設(shè)置的值為依據(jù)。于是就造成了上面的問題了,雖然讓用戶覺得不需要必須填(因?yàn)闆]紅星),但不填之后注冊(cè)不了

問題分析

通過對(duì)X3.1后臺(tái)設(shè)置分析發(fā)現(xiàn)這里是一個(gè)radio類型的,也就是開關(guān)(廢話而已,誰都看得出來);表單name為settingnew[forgeemail],值為0和1,0為關(guān)閉,1為打開,這個(gè)跟一般的習(xí)慣都是一樣的。也就是說這個(gè)值選擇1時(shí)我們注冊(cè)的時(shí)候可以不需要填寫郵箱,反之也就是默認(rèn)情況下我們必須填寫郵箱才能注冊(cè)帳號(hào)。

而做過Discuz二次開發(fā)的同學(xué)都應(yīng)該清楚,其實(shí)后臺(tái)類似這樣的設(shè)置數(shù)據(jù)都是存儲(chǔ)在common_setting這個(gè)數(shù)據(jù)表中,而很快我發(fā)現(xiàn)這個(gè)數(shù)據(jù)表中直接有forgeemail這個(gè)記錄,說明這個(gè)地方dz是直接保存的(不想保存高亮值信息那樣,還通過進(jìn)制轉(zhuǎn)化,哈哈,不用再看源代碼去了)。如下圖(當(dāng)然下面是默認(rèn)的樣子)
關(guān)閉discuzX3.2注冊(cè)頁面的注冊(cè)郵箱驗(yàn)證

問題解決

說到這里大家就應(yīng)該明白了什么問題了,其實(shí)這個(gè)問題就是3.2以后這個(gè)數(shù)據(jù)表中的skey為forgeemail的記錄只是用于判斷是否帶紅星,而不用于判斷是不是真要填;換句話說不管這里設(shè)置的是0還是1,你的網(wǎng)站注冊(cè)的時(shí)候都得填寫郵箱(這可能也是DZ團(tuán)隊(duì)在升級(jí)改變這個(gè)問題所忽視的地方,比如就算強(qiáng)制設(shè)計(jì)成必填,那么也應(yīng)該把數(shù)據(jù)庫的這個(gè)字段值在升級(jí)的時(shí)候自動(dòng)覆蓋成0了)。

那么如果徹底解決(也就是可以讓你的網(wǎng)站實(shí)現(xiàn)用戶不不必填寫郵箱也可以注冊(cè)),這個(gè)相對(duì)比較復(fù)雜,要修改你注冊(cè)表單的驗(yàn)證程序,而且我個(gè)人也不推薦這么做,這里就不詳述了。

那么接下來就是把注冊(cè)的時(shí)候帶上紅星(其實(shí)默認(rèn)的時(shí)候就是這樣的),當(dāng)然問題是針對(duì)在3.2之前通過后臺(tái)設(shè)置過這值的網(wǎng)站。那么現(xiàn)在去數(shù)據(jù)庫找到common_setting這個(gè)數(shù)據(jù)表找到skey值forgeemail的svalue改為默認(rèn)的0就可以了,也可以在數(shù)據(jù)庫管理工具或者網(wǎng)站后臺(tái)運(yùn)行以下sql語句

update pre_common_setting set 'svalue'='0' where  'skey'='orgeemail'
注意:這里的表前綴為DZ的默認(rèn)的pre_,如果你修改了,改成你新修改的

discuzX3.2后臺(tái)關(guān)閉注冊(cè)郵箱必填選項(xiàng)的功能。詳細(xì)過程如下:
步驟1:source/admincp/admincp_setting.php 文件
查找:

    showsetting('setting_access_register_send_register_url', 'settingnew[sendregisterurl]', $setting['sendregisterurl'], 'radio');

大概是440-441行:
增加以下代碼:

    showsetting('setting_access_register_forge_email', 'settingnew[forgeemail]', $setting['forgeemail'], 'radio');

步驟2:打開source/language/lang_admincp.php 文件
查找: 一個(gè)郵箱只允許注冊(cè)一個(gè)帳戶

大概811行,增加以下代碼:

'setting_access_register_forge_email' => '取消注冊(cè)郵箱必填',

'setting_access_register_forge_email_comment' => '開啟后如果用不不填寫注冊(cè)郵箱,將自動(dòng)生成一個(gè)郵箱地址',

步驟3:修改source/class/class_member.php
大概611行:
原文是:

關(guān)閉discuzX3.2注冊(cè)頁面的注冊(cè)郵箱驗(yàn)證

$email = strtolower(trim($_GET['email']));if(empty($this->setting['ignorepassword'])) {if($_GET['password'] !== $_GET['password2']) {
   showmessage('profile_passwd_notmatch');
}if(!$_GET['password'] || $_GET['password'] != addslashes($_GET['password'])) {
  showmessage('profile_passwd_illegal');
 } $password = $_GET['password'];
} else {       $password = md5(random(10));
       }
}

關(guān)閉discuzX3.2注冊(cè)頁面的注冊(cè)郵箱驗(yàn)證

修改為(或直接替換以下:)

關(guān)閉discuzX3.2注冊(cè)頁面的注冊(cè)郵箱驗(yàn)證

$email = strtolower(trim($_GET['email']));if(empty($email) && $_G['setting']['forgeemail']) {    $_GET['email'] = $email = strtolower(random(6)).'@'.$_SERVER['HTTP_HOST'];
}if(empty($this->setting['ignorepassword']))
{    if($_GET['password'] !== $_GET['password2']) {
        showmessage('profile_passwd_notmatch');
    }    if(!$_GET['password'] || $_GET['password'] != addslashes($_GET['password']))
    {
        showmessage('profile_passwd_illegal');
    }    $password = $_GET['password'];
} 
else {    $password = md5(random(10));
}
}

關(guān)閉discuzX3.2注冊(cè)頁面的注冊(cè)郵箱驗(yàn)證

工具->更新緩存:
全局->注冊(cè)與訪問控制:
關(guān)閉discuzX3.2注冊(cè)頁面的注冊(cè)郵箱驗(yàn)證

如果你想在注冊(cè)頁面不顯示 注冊(cè)郵箱選項(xiàng),直接去掉模板中的相應(yīng)的email代碼即可。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

分享名稱:關(guān)閉discuzX3.2注冊(cè)頁面的注冊(cè)郵箱驗(yàn)證-創(chuàng)新互聯(lián)
分享URL:http://bm7419.com/article0/didjoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、企業(yè)建站品牌網(wǎng)站制作、企業(yè)網(wǎng)站制作、外貿(mào)建站、服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站