请选择 进入手机版 | 继续访问电脑版
查看: 28|回复: 0

用户跳转访问Discuz论坛自动注册登录实现方法

[复制链接]

634

主题

636

帖子

3228

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3228
发表于 5 天前 | 显示全部楼层 |阅读模式
用户跳转访问Discuz论坛自动注册账号并登录的实现方法

本帖实现功能:
1、从原有系统进入论坛自动登录和注册;
2、实现弹框在本页面,不进行跳转;
3、js在页面加载时直接发起注册请求。
这个功能之前使用的uc_user_register这个函数来处理的,但是今天在开发用户空间时就会出现问题。

项目需求:
在我们原有的系统上添加一个论坛,但是用户信息需要共享。
实现方法:在进入论坛时带上原有系统的用户信息,然后论坛那边拿到信息直接注册即可。
从原有系统进入论坛自动注册登录
准备一个这样的一个缓冲页面,放到upload/template/default/touch/member/register.htm的页面中

手机版正在跳转页面

手机版正在跳转页面

然后我们需要把原有注册代码也需要放到upload/template/default/touch/member/register.htm
放这段代码的原因是dsicuz在提交表单时会有很多的参数限制,我们就保持原有不动就行了
  1. <form method="post" autocomplete="off" name="register" id="registerform" action="member.php?mod={$_G[setting][regname]}&mobile=2">
  2.    <input type="hidden" name="regsubmit" value="yes" />
  3.    <input type="hidden" id="hash" name="formhash" value="{FORMHASH}" />
  4.    <!--{eval $dreferer = str_replace('&', '&', dreferer());}-->
  5.    <input type="hidden" id="referer" name="referer" value="$dreferer" />
  6.    <input type="hidden" name="activationauth" value="{if $_GET[action] == 'activation'}$activationauth{/if}" />
  7.    <input type="hidden" name="agreebbrule" value="$bbrulehash" id="agreebbrule" checked="checked" />
  8.    <!--{if $_G['setting']['sendregisterurl']}-->
  9.    <input type="hidden" name="hash" value="$_GET[hash]" />
  10.    <!--{/if}-->
  11.    <!--{if $secqaacheck || $seccodecheck}-->
  12.    <!--{subtemplate common/seccheck}-->
  13.    <!--{/if}-->
  14.    </div>
  15. </form>
复制代码
然后我们需要在页面加载时直接发情请求,添加下面代码即可。
实现弹框在本页面,不进行跳转,加载时直接发起注册请求
这段js代码实现的功能:在页面加载时直接发起注册请求,然后返回信息,直接在本页面显示,而非跳转到另一个页面

  1. <script>
  2.     var hash = $('#hash').val();
  3.     var referer = $('#referer').val();
  4.     $.ajax({
  5.         type:'POST',
  6.         url:"member.php?mod={$_G[setting][regname]}&mobile=2" +'&inajax=1',
  7.         data:{
  8.             "handlekey":"registerform",
  9.             "inajax" : 1,
  10.             "regsubmit" :"yes",
  11.             "formhash":hash,
  12.             "referer" :referer
  13.         },
  14.         dataType:'xml'
  15.     })
  16.         .success(function(s) {
  17.             popup.open(s.lastChild.firstChild.nodeValue);
  18.             evalscript(s.lastChild.firstChild.nodeValue);
  19.         })
  20.         .error(function() {
  21.             window.location.href = obj.attr('href');
  22.             popup.close();
  23.         });
  24. </script>
复制代码
这个时候还需要最后一步的就是从原系统用什么形势来传过来。这个方式这里就不提供了,我做一个模拟的数据。
在upload/source/module/member/member_register.php 方法 on_register里边根据注释添加自己的代码即可

1588512651490837.png
测试效果
我们注册一个ceshi123的账号
注册信息.png
测试发帖
02.png
为什么不使用uc_user_register这个方法来注册用户的原因
如果使用了uc_user_register来直接注册用户,就会导致下面的信息全部获取不到
03.png
以上就是用户跳转访问Discuz论坛自动注册账号登录的实现方法详细内容了。
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|蓄财网 ( 豫ICP备2021002293号 )

GMT+8, 2021-10-19 21:12 , Processed in 0.117658 second(s), 35 queries .

蓄财网 ©版权所有

© 2021 蓄财网(www.aixc.cn)

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