discuz 默认的 QQ 登录,第一次注册的时候,还需要完善资料信息,如账号,邮箱,邮箱认证,等等。
我感觉没必要,本来第三方登录就应该一键登录,简单粗暴,不应该第三方登录后还要填写各种信息,用户体验不好。
1、修改 template\主题目录\member\register.htm 文件
作用:程序自动补全信息,用户名为 QQ 用户名,邮箱为随机密码。
文件最上方的 <!--{template common/header}-->
下面添加:
- <!--{if $_GET['action'] != 'activation'}-->
- <!--{eval $RandPWD = substr(md5(time()), 0, 8); $RandName = substr(md5(time()), 0, 2); $GetUserName = dhtmlspecialchars($_G[member][username]); $NewMember = str_replace(' ','',$GetUserName); $RepMember = DB::result(DB::query("SELECT uid FROM ".DB::table('common_member')." WHERE username = '$NewMember'"));}-->
- <!--{if $RepMember > 0}-->
- <!--{eval $NewMemberRep = $NewMember."_".$RandName}-->
- <!--{else}-->
- <!--{if strlen($NewMember) < 3}-->
- <!--{eval $NewMemberRep = $NewMember."_".$RandName}-->
- <!--{else}-->
- <!--{eval $NewMemberRep = $NewMember}-->
- <!--{/if}-->
- <!--{/if}-->
- <!--{/if}-->
查找
- value="{echo dhtmlspecialchars($_GET[defaultusername])}
替换
- {if $_GET['mod'] == 'connect'}value="{$NewMemberRep}"{else} value="{echo dhtmlspecialchars($_GET[defaultusername])}"{/if}
查找(2 个地方)
- id="{$this->setting['reginput']['password']}"
后面追加
- {if $_GET['mod'] == 'connect'}value="$RandPWD"{/if}
2、修改 \source\class\class_member.php 核心文件
作用:解决一键登录时提示 Email 地址无效
查找
- $email = strtolower(trim($_GET['email']));
下方添加
- if($_GET['mod'] == 'connect') {
- $_GET['email'] = $email = strtolower(random(6)).'@'.substr($_SERVER['HTTP_HOST'],4);
- }
查找
- $refreshtime = 3000;
改为
- if($_GET['mod'] == 'connect') {
- $refreshtime = 1;
- }else{
- $refreshtime = 3000;
- }
如果网站已设置邮箱非必填,则不需要进行第 2 步。
完毕!