当前位置:首页>记录>discuz 修改 QQ 互联登录为一键登录,免完善资料过程

discuz 修改 QQ 互联登录为一键登录,免完善资料过程

2017-07-03 2056 记录
discuz 默认的 QQ 登录,第一次注册的时候,还需要完善资料信息,如账号,邮箱,邮箱认证,等等。 我感觉没必要,本来第三方登录就应该一键登录,简单粗暴,不应该第三方登录后还要填写各种信息,用户体验不好。  

1、修改 template\主题目录\member\register.htm 文件

作用:程序自动补全信息,用户名为 QQ 用户名,邮箱为随机密码。 文件最上方的 <!--{template common/header}--> 下面添加:
  1. <!--{if $_GET['action'] != 'activation'}-->
  2. <!--{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'"));}-->
  3. <!--{if $RepMember > 0}-->
  4. <!--{eval $NewMemberRep = $NewMember."_".$RandName}-->
  5. <!--{else}-->
  6. <!--{if strlen($NewMember) < 3}-->
  7. <!--{eval $NewMemberRep = $NewMember."_".$RandName}-->
  8. <!--{else}-->
  9. <!--{eval $NewMemberRep = $NewMember}-->
  10. <!--{/if}-->
  11. <!--{/if}-->
  12. <!--{/if}-->
  查找
  1. value="{echo dhtmlspecialchars($_GET[defaultusername])}
替换
  1. {if $_GET['mod'] == 'connect'}value="{$NewMemberRep}"{else} value="{echo dhtmlspecialchars($_GET[defaultusername])}"{/if}
  查找(2 个地方)
  1. id="{$this->setting['reginput']['password']}"
后面追加
  1. {if $_GET['mod'] == 'connect'}value="$RandPWD"{/if}
   

2、修改 \source\class\class_member.php 核心文件

作用:解决一键登录时提示 Email 地址无效 查找
  1. $email = strtolower(trim($_GET['email']));
下方添加
  1. if($_GET['mod'] == 'connect') {
  2. $_GET['email'] = $email = strtolower(random(6)).'@'.substr($_SERVER['HTTP_HOST'],4);
  3. }
  查找
  1. $refreshtime = 3000;
改为
  1. if($_GET['mod'] == 'connect') {
  2. $refreshtime = 1;
  3. }else{
  4. $refreshtime = 3000;
  5. }
  如果网站已设置邮箱非必填,则不需要进行第 2 步。   完毕!

评论 (0)