mt 发表于 2017-8-14 20:42:52

解决DZ3.2版的会员注册关于邮箱注册的问题

本帖最后由 mt 于 2017-8-14 20:46 编辑

好像DZ3.2以前的版本在会员注册时邮箱这个项目可以在后台选择是否必填,现在却没有了,虽然对于站长来说,会员注册时填写邮箱在以后的运营中有很大好处(比如群发消息),但是总有部分会员没有那个邮箱,有没有办法解决这个问题呢,答案是肯定的,方法有两种:
1、后台数据库直接修改
登陆php数据库后台,找到common_setting这个表单,找到skey值forgeemail的svalue改为默认的0就可以了,也可以在数据库管理工具或者网站后台运行以下sql语句:



**** Hidden Message *****
2、如果想在管理员后台随时控制的话,就比较复杂一些,需要修改多个文件的代码。
先上一个效果图吧:

具体操作流程如下:
步骤1:source/admincp/admincp_setting.php 文件
查找:
showsetting('setting_access_register_send_register_url', 'settingnew', $setting['sendregisterurl'], 'radio');

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

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

步骤2:打开source/language/lang_admincp.php 文件
查找: 一个邮箱只允许注册一个帐户

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

'setting_access_register_forge_email' => '取消注册邮箱必填',

'setting_access_register_forge_email_comment' => '开启后如果用不不填写注册邮箱,将自动生成一个邮箱地址',
步骤3:修改source/class/class_member.php
大概611行:
原文是:

$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));
}
}

上传修改过的文件后更新缓存即可。

页: [1]
查看完整版本: 解决DZ3.2版的会员注册关于邮箱注册的问题