本文實(shí)現(xiàn)功能:
1.從原有系統(tǒng)進(jìn)入論壇自動(dòng)登錄和注冊(cè)
2.實(shí)現(xiàn)彈框在本頁(yè)面,不進(jìn)行跳轉(zhuǎn)
3.js在頁(yè)面加載時(shí)直接發(fā)起注冊(cè)請(qǐng)求
這個(gè)功能之前使用的
uc_user_register
這個(gè)函數(shù)來處理的,但是今天在開發(fā)用戶空間時(shí)就會(huì)出現(xiàn)問題。
項(xiàng)目需求
在我們?cè)械南到y(tǒng)上添加一個(gè)論壇,但是用戶信息需要共享。
實(shí)現(xiàn)方法:在進(jìn)入論壇時(shí)帶上原有系統(tǒng)的用戶信息,然后論壇那邊拿到信息直接注冊(cè)即可。
從原有系統(tǒng)進(jìn)入論壇自動(dòng)注冊(cè)登錄
準(zhǔn)備一個(gè)這樣的一個(gè)緩沖頁(yè)面,放到upload/template/default/touch/member/register.htm
的頁(yè)面中
然后我們需要把原有注冊(cè)代碼也需要放到upload/template/default/touch/member/register.htm
放這段代碼的原因是dsicuz在提交表單時(shí)會(huì)有很多的參數(shù)限制,我們就保持原有不動(dòng)就行了
<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('&', '&', 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>
然后我們需要在頁(yè)面加載時(shí)直接發(fā)情請(qǐng)求,添加下面代碼即可。
實(shí)現(xiàn)彈框在本頁(yè)面,不進(jìn)行跳轉(zhuǎn),加載時(shí)直接發(fā)起注冊(cè)請(qǐng)求
這段js代碼實(shí)現(xiàn)的功能:在頁(yè)面加載時(shí)直接發(fā)起注冊(cè)請(qǐng)求,然后返回信息,直接在本頁(yè)面顯示,而非跳轉(zhuǎn)到另一個(gè)頁(yè)面
<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>
這個(gè)時(shí)候還需要最后一步的就是從原系統(tǒng)用什么形勢(shì)來傳過來。這個(gè)方式這里就不提供了,我做一個(gè)模擬的數(shù)據(jù)。
在upload/source/module/member/member_register.php 方法 on_register里邊根據(jù)注釋添加自己的代碼即可
測(cè)試效果
我們注冊(cè)一個(gè)ceshi123的賬號(hào)
測(cè)試發(fā)帖
為什么不使用uc_user_register
這個(gè)方法來注冊(cè)用戶的原因
如果使用了uc_user_register
來直接注冊(cè)用戶,就會(huì)導(dǎo)致下面的信息全部獲取不到