网站 discuz 同步登录

来源:互联网 发布:司法大数据研究院 编辑:程序博客网 时间:2024/05/15 23:48

最近做了一个微网站的项目,但是要整合discuz,能实现在微网站登录之后,discuz同步登录。

刚开始做的时候,第一个想到的就是curl模拟登录,最后登录也成功了,但是本地一直显示的是未登录状态,最后了解到原来discuz的登录状态是保存在cookie中的,所以模拟登录之后,cookie存在服务器上,而本地是没有保存的。(应该有一种方法把服务器上 的cookie保存到本地,然后应该就会处于登录状态,由于时间 紧迫,就没有继续深究)

因为当时注册时,就是用的iframe将注册页面加载到注册页,然后实现的微网站的注册会员和bbs的注册会员同步,而且两个模块的表数据互不关联,可以实现随时分离。

后来就想,登录是不是也可以用注册的方法,用iframe 将bbs的登录页面加载到微网站的登录页中,然后通过js获取到相应的表单信息,用ajax提交给论坛的登录处理页,这个前提是bbs和微网站是在一个域下面。最后轻松实现一次登录,微网站和论坛都能使用。

需要注意的是手机端的登录页面和PC端的登录页面不一样。


var bbsLoginForm = $(window.frames["bbsframe"].document).find("#loginform");  //跨页面访问<span style="font-family: Arial, Helvetica, sans-serif;">iframe中的元素</span>var loginUrl = bbsLoginForm.attr("action");var formhash = bbsLoginForm.find("#formhash").val();var referer = bbsLoginForm.find("#referer").val();var fastloginfield = "username";var cookietime = bbsLoginForm.find("[name=cookietime]").eq(0).val();var username = phone;var password = pwd;var questionid = "0";var answer = '';var submit = "true";$.ajax({url     : "{ling:C('BBS_URL')}"+loginUrl,dataType: "text",type    : "post",data    : {formhash:formhash,referer:referer,fastloginfield:fastloginfield,cookietime:cookietime,username:username,password:password,questionid:questionid,answer:answer,submit:submit<span style="white-space:pre"></span>},async: false,success    : function(backdata){//setTimeOut(function(){},2000);},});


0 0