Discuz功能調整-後臺控制Email必填功能

最近再因為朋友在Discuz上的一些特殊需求,他要求在註冊的時候希望Email不要有必填或者可以自己選擇何時要必填或者不必填等。


HF先找了一下Discuz官方網站是不是有相關修改,因為印象中Dz3.1好像有,可是好像Dz3.2以上就被移除了,好在網友 dicky57分享了如何修改,這邊也做一下紀錄。
首先打開路徑source/admincp/admincp_setting.php
然後查找
showsetting('setting_access_register_send_register_url', 'settingnew[sendregisterurl]',$setting['sendregisterurl'], 'radio'
在這個下方新增以下代碼
showsetting('setting_access_register_forge_email', 'settingnew[forgeemail]', $setting['forgeemail'], 'radio'
接下來再打開source/language/lang_admincp.php
然後搜尋以文字 
個郵箱只允許註冊一個帳戶<br/>注意:只有在<a href="?action=setting&operation=mail">站
在這段文字下方添加以下文字
'setting_access_register_forge_email' => '取消註冊郵箱必填','setting_access_register_forge_email_comment' => '開啟後如果用戶不填寫註冊郵箱,將自動生成一個隨機郵箱地址'
最後再打開路徑source/class/class_member.php
然後搜尋
$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));
                                }
                        }
將下方整段替換成以下
$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));
                                }
                        }
修改完畢後更新一下緩存,記得原始代碼要備份,以防出現問題可以還原。
原作者:dicky57

留言

這個網誌中的熱門文章