【Discuz】如何实现自动注册登陆

2022年01月14日 阅读数:1
这篇文章主要向大家介绍【Discuz】如何实现自动注册登陆,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

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

项目需求

在咱们原有的系统上添加一个论坛,可是用户信息须要共享。node

实现方法:在进入论坛时带上原有系统的用户信息,而后论坛那边拿到信息直接注册便可。ajax

从原有系统进入论坛自动注册登陆

准备一个这样的一个缓冲页面,放到upload/template/default/touch/member/register.htm的页面中
在这里插入图片描述
而后咱们须要把原有注册代码也须要放到upload/template/default/touch/member/register.htm函数

放这段代码的缘由是dsicuz在提交表单时会有不少的参数限制,咱们就保持原有不动就好了post

<form method="post" autocomplete="off" name="register" id="registerform" action="member.php?mod={ $_G[setting][regname]}&mobile=2">

   <input type="hidden" name="regsubmit" value="yes" />

   <input type="hidden" id="hash" name="formhash" value="{FORMHASH}" />

   <!--{
   eval $dreferer = str_replace('&amp;', '&', dreferer());}-->

   <input type="hidden" id="referer" name="referer" value="$dreferer" />

   <input type="hidden" name="activationauth" value="{if $_GET[action] == 'activation'}$activationauth{/if}" />

   <input type="hidden" name="agreebbrule" value="$bbrulehash" id="agreebbrule" checked="checked" />

   <!--{
   if $_G['setting']['sendregisterurl']}-->

   <input type="hidden" name="hash" value="$_GET[hash]" />

   <!--{
   /if}-->

   <!--{
   if $secqaacheck || $seccodecheck}-->

   <!--{
   subtemplate common/seccheck}-->

   <!--{
   /if}-->

   </div>

</form>

而后咱们须要在页面加载时直接发情请求,添加下面代码便可。测试

实现弹框在本页面,不进行跳转,加载时直接发起注册请求

这段js代码实现的功能:在页面加载时直接发起注册请求,而后返回信息,直接在本页面显示,而非跳转到另外一个页面url

<script>

    var hash = $('#hash').val();

    var referer = $('#referer').val();

    $.ajax({
   

        type:'POST',

        url:"member.php?mod={ $_G[setting][regname]}&mobile=2" +'&inajax=1',

        data:{
   

            "handlekey":"registerform",

            "inajax" : 1,

            "regsubmit" :"yes",

            "formhash":hash,

            "referer" :referer

        },

        dataType:'xml'

    })

        .success(function(s) {
   

            popup.open(s.lastChild.firstChild.nodeValue);

            evalscript(s.lastChild.firstChild.nodeValue);

        })

        .error(function() {
   

            window.location.href = obj.attr('href');

            popup.close();

        });

</script>

这个时候还须要最后一步的就是从原系统用什么形势来传过来。这个方式这里就不提供了,我作一个模拟的数据。spa

upload/source/module/member/member_register.php 方法 on_register里边根据注释添加本身的代码便可
在这里插入图片描述code

测试效果

咱们注册一个ceshi123的帐号
在这里插入图片描述
测试发帖
在这里插入图片描述orm

为何不使用uc_user_register这个方法来注册用户的缘由

若是使用了uc_user_register来直接注册用户,就会致使下面的信息所有获取不到
在这里插入图片描述