首頁 >CMS教程 >Discuz >discuz如何實現自動註冊登錄

discuz如何實現自動註冊登錄

咔咔
咔咔原創
2020-05-03 21:38:345079瀏覽

本文實作功能:

    1.從原始系統進入論壇自動登入與註冊

    2.實現彈框在本頁面,不進行跳躍

#    3.js在頁面載入時直接發起註冊請求

這個功能之前使用的uc_user_register這個函數來處理的,但是今天在開發用戶空間時就會出現問題。

專案需求

在我們原有的系統上新增一個論壇,但是使用者資訊需要共用。

實作方法:在進入論壇時帶上原有系統的使用者訊息,然後論壇那邊拿到資訊直接註冊即可。

從原有系統進入論壇自動註冊登入

準備一個這樣的緩衝頁面,放到upload/template/default/touch/member/ register.htm的頁面中

discuz如何實現自動註冊登錄

#然後我們需要把原有註冊程式碼也需要放到upload/template/default /touch/member/register.htm

放這段程式碼的原因是dsicuz在提交表單時會有很多的參數限制,我們就保持原有不動就行了

<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(&#39;&&#39;, &#39;&&#39;, dreferer());}-->
   <input type="hidden" id="referer" name="referer" value="$dreferer" />
   <input type="hidden" name="activationauth" value="{if $_GET[action] == &#39;activation&#39;}$activationauth{/if}" />
   <input type="hidden" name="agreebbrule" value="$bbrulehash" id="agreebbrule" checked="checked" />
   <!--{if $_G[&#39;setting&#39;][&#39;sendregisterurl&#39;]}-->
   <input type="hidden" name="hash" value="$_GET[hash]" />
   <!--{/if}-->
   <!--{if $secqaacheck || $seccodecheck}-->
   <!--{subtemplate common/seccheck}-->
   <!--{/if}-->
   </div>
</form>

然後我們需要在頁面載入時直接發情請求,加入下面程式碼即可。

實作彈框在本頁面,不進行跳轉,載入時直接發起註冊請求

這段js程式碼實現的功能:在頁面載入時直接發起註冊請求,然後傳回訊息,直接在本頁顯示,而非跳到另一個頁面

<script>
    var hash = $(&#39;#hash&#39;).val();
    var referer = $(&#39;#referer&#39;).val();
    $.ajax({
        type:&#39;POST&#39;,
        url:"member.php?mod={$_G[setting][regname]}&mobile=2" +&#39;&inajax=1&#39;,
        data:{
            "handlekey":"registerform",
            "inajax" : 1,
            "regsubmit" :"yes",
            "formhash":hash,
            "referer" :referer
        },
        dataType:&#39;xml&#39;
    })
        .success(function(s) {
            popup.open(s.lastChild.firstChild.nodeValue);
            evalscript(s.lastChild.firstChild.nodeValue);
        })
        .error(function() {
            window.location.href = obj.attr(&#39;href&#39;);
            popup.close();
        });
</script>

這個時候還需要最後一步的就是從原始系統用什麼情勢來傳過來。這個方式這裡就不提供了,我做一個模擬的數據。

在upload/source/module/member/member_register.php   方法on_register裡邊根據註解添加自己的程式碼即可

discuz如何實現自動註冊登錄

測試效果

我們註冊一個ceshi123的帳號

discuz如何實現自動註冊登錄

測試發文

discuz如何實現自動註冊登錄

為什麼不使用uc_user_register 這個方法來註冊用戶的原因

如果使用了uc_user_register來直接註冊用戶,就會導致下面的資訊全部取得不到

discuz如何實現自動註冊登錄

以上是discuz如何實現自動註冊登錄的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn