找回密码
 立即注册

只需一扫,快速开始

QQ登录

只需一步,快速开始

搜索
查看: 27031|回复: 0

[技术经验] Discuz3.2取消邮箱必填方法

[复制链接]

8万

主题

417

回帖

9万

积分

管理员

积分
94525
QQ
发表于 2016-9-27 01:01:49 | 显示全部楼层 |阅读模式
以前3.1版本是取消了,实际上是随机生成一个邮箱作为用户注册邮箱,后台因为保证数据真实一致性就取消了。
在移动端日益发展的今天,这个去除还是有部分需求的。毕竟手机号注册越来越多。

第一步,后台设置中增加取消邮箱必填的功能
source/admincp/admincp_setting.php 文件
查找
  1. showsetting('setting_access_register_send_register_url', 'settingnew[sendregisterurl]', $setting['sendregisterurl'], 'radio');
复制代码
在这个下面增加一行代码,实际上后台就增加了一个开关。
  1. showsetting('setting_access_register_forge_email', 'settingnew[forgeemail]', $setting['forgeemail'], 'radio');
复制代码



第二步:语言包文件增加相关文件
source/language/lang_admincp.php 文件
在语言包的数组中增加
  1. 'setting_access_register_forge_email' => '取消注册邮箱必填',
  2. 'setting_access_register_forge_email_comment' => '开启后如果用不不填写注册邮箱,将自动生成一个邮箱地址',
复制代码


第三步:随机生成一个邮箱用于用户注册,这个随机邮箱将存放在用户数据库字段中。
source/class/class_member.php 文件
  1. $email = strtolower(trim($_GET['email']));
  2. if(empty($this->setting['ignorepassword'])) {
  3. if($_GET['password'] !== $_GET['password2']) {
  4. showmessage('profile_passwd_notmatch');
  5. }

  6. if(!$_GET['password'] || $_GET['password'] != addslashes($_GET['password'])) {
  7. showmessage('profile_passwd_illegal');
  8. }
  9. $password = $_GET['password'];
  10. } else {
  11. $password = md5(random(10));
  12. }
  13. }
复制代码
修改为:
  1.     $email = strtolower(trim($_GET['email']));
  2.                                 if(empty($email) && $_G['setting']['forgeemail']) {
  3.                                         $email_ext = strpos($_SERVER['HTTP_HOST'], '.') ? $_SERVER['HTTP_HOST'] : $_SERVER['HTTP_HOST'].'.com';
  4.                                         $_GET['email'] = $email = strtolower(random(6)).'@'.$email_ext;
  5.                                 }
  6.                                 if(empty($this->setting['ignorepassword'])) {
  7.                                         if($_GET['password'] !== $_GET['password2']) {
  8.                                                 showmessage('profile_passwd_notmatch');
  9.                                         }

  10.                                         if(!$_GET['password'] || $_GET['password'] != addslashes($_GET['password'])) {
  11.                                                 showmessage('profile_passwd_illegal');
  12.                                         }
  13.                                         $password = $_GET['password'];
  14.                                 } else {
  15.                                         $password = md5(random(10));
  16.                                 }
复制代码


完成修改后,后台全局中就会有一个取消邮箱必填的功能了。
取消邮箱必填discuz.png


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册   

本版积分规则

QQ|Archiver|手机版|小黑屋|站秘书 ( 蜀ICP备15034504号-3 )

GMT+8, 2025-1-15 18:48 , Processed in 0.252220 second(s), 53 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表