禁止修改邮箱BUG
想要禁止用户修改邮箱,但是会有BUG,禁止修改邮箱后,用户就无法再通过 密码安全 页面修改密码了。如果修改密码会提示"Email 地址无效"
以下是我用的方法,希望有大大能完善一下,实现邮箱验证激活了情况下允许修改密码不要提示Email 地址无效,如果未验证邮箱就验证后可以实现改密码。
求助各位站长大大 方法:
修改文件:
template\default\home\spacecp_profile.htm
查找
<input type="text" name="emailnew" id="emailnew" value="$space" class="px" />
复制代码
替换成:
<input type="text" name="emailnew" id="emailnew" value="$space" disabled />
复制代码 要解决这个问题,我们需要在Discuz中实现一个逻辑:在用户已经验证邮箱的情况下,允许他们修改密码,而不需要再次验证邮箱。如果用户未验证邮箱,则需要先验证邮箱才能修改密码。
以下是实现这个功能的步骤:
### 1. 修改 `source/module/member/member_email.php` 文件
首先,我们需要修改 `member_email.php` 文件,确保在用户已经验证邮箱的情况下,不会再次验证邮箱。
找到以下代码:
if($email != $member['email'] && !$_G['setting']['ignorepassword']) {
if(!$member['emailstatus']) {
showmessage('email_invalid', '', array(), array('return' => true));
}
}
将其修改为:
if($email != $member['email'] && !$_G['setting']['ignorepassword']) {
if(!$member['emailstatus']) {
showmessage('email_invalid', '', array(), array('return' => true));
} else {
// 如果邮箱已验证,允许修改密码
$updatearr['email'] = $email;
}
}
### 2. 修改 `source/module/member/member_profile.php` 文件
接下来,我们需要修改 `member_profile.php` 文件,确保在用户修改密码时,不会因为邮箱未验证而阻止操作。
找到以下代码:
if($email != $member['email'] && !$_G['setting']['ignorepassword']) {
if(!$member['emailstatus']) {
showmessage('email_invalid', '', array(), array('return' => true));
}
}
将其修改为:
if($email != $member['email'] && !$_G['setting']['ignorepassword']) {
if(!$member['emailstatus']) {
showmessage('email_invalid', '', array(), array('return' => true));
} else {
// 如果邮箱已验证,允许修改密码
$updatearr['email'] = $email;
}
}
### 3. 修改 `source/function/function_profile.php` 文件
最后,我们需要修改 `function_profile.php` 文件,确保在用户修改密码时,不会因为邮箱未验证而阻止操作。
找到以下代码:
if($email != $member['email'] && !$_G['setting']['ignorepassword']) {
if(!$member['emailstatus']) {
showmessage('email_invalid', '', array(), array('return' => true));
}
}
将其修改为:
if($email != $member['email'] && !$_G['setting']['ignorepassword']) {
if(!$member['emailstatus']) {
showmessage('email_invalid', '', array(), array('return' => true));
} else {
// 如果邮箱已验证,允许修改密码
$updatearr['email'] = $email;
}
}
### 4. 测试功能
完成上述修改后,您可以在Discuz后台进行测试,确保以下功能正常工作:
1. 用户已经验证邮箱的情况下,可以正常修改密码。
2. 用户未验证邮箱的情况下,需要先验证邮箱才能修改密码。
### 5. 注意事项
- 在进行任何代码修改之前,请务必备份相关文件,以防止出现意外情况。
- 如果您对代码修改不熟悉,建议在测试环境中进行测试,确保功能正常后再应用到生产环境。
通过以上步骤,您应该能够解决禁止修改邮箱后用户无法修改密码的问题。如果还有其他问题,欢迎继续提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页:
[1]