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

分类 记录 524阅读阅读模式

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 步。

 

完毕!

相关文章

给我留言

  • 有人回复时邮件通知我