网站用户数据怎么和Discuz用户数据保持一致 ??

lanzhengwu 2009-07-09 08:51:43
加精
现在网站已经成形(基于JAVA开发,部署在Tomcat下,数据库:mysql) ,想基于网站加一个论坛 ,下了一个Discuz ,部署在apache下可以运行了 。以前没用过Discuz ,不知道怎么使网站用户数据和Discuz用户数据保持一致呢 ,因为网站已经成形 ,用户表已经不可能改了 ,Discuz估计也是一样 ,所以他们用同一张用户表似乎不大容易 ..有没这方面经验的大虾呢 ?? 先谢了 。。
...全文
3405 74 打赏 收藏 转发到动态 举报
写回复
用AI写文章
74 条回复
切换为时间正序
请发表友善的回复…
发表回复
泛泛之辈110 2011-09-16
  • 打赏
  • 举报
回复
阿萨德发射点发
泛泛之辈110 2011-09-16
  • 打赏
  • 举报
回复
阿萨德发射点发asdfasdfasdfasdfasdf
泛泛之辈110 2011-09-16
  • 打赏
  • 举报
回复
asdfasdfasdfasdfasdf
ExMan 2010-07-30
  • 打赏
  • 举报
回复
哎。。也在找解决方法。。。。。。
usnay 2010-06-26
  • 打赏
  • 举报
回复
我个人认为,这样的应用经常会碰到,假如一家公司本身有自己的网站,注册用户己经达到10万人,自己以前也有论坛的,这个时候,这个网站希望升级论坛,就弄了一个discuz,然后,希望把原来老的论坛里的数据转移到discuz,中,我相信这样的应用很常见,ucenter,确实是官方提供的一个集成工具,但是ucenter开发起来的目的,是为了让基于以它为中心的所有应用能够在登陆,登出,以及短消息提示方面做到同步,并没有其他设计的目的,如uchome,你只要在uchome新注册一个用户,然后到ucenter的数据库里查看一下,改变了哪几个表,存了什么数据,你就明白,应该怎么导入数据了,discuz也一样,你只要把用户中心的数据像它原来的逻辑一样导入数据,这样,你就可以登陆了,因为所有基于ucenter服务的用户登陆和退出(密码判断)都是在ucenter的数据库上判断的....
lemon520qing 2010-06-12
  • 打赏
  • 举报
回复
好帖子,正在找这方面的内容
redfox241 2009-10-17
  • 打赏
  • 举报
回复
其实这个不是问题,我已经实现了,改变登陆验证方式就可以!!!
去这里看看 www.daleofmaple.com
linuowjh 2009-08-19
  • 打赏
  • 举报
回复
mark 顶起
liffe 2009-08-04
  • 打赏
  • 举报
回复
xianding
老码不识途 2009-08-03
  • 打赏
  • 举报
回复
用UCenter。
wuxide007 2009-08-02
  • 打赏
  • 举报
回复
观望下,可能需要!!
znlxy 2009-08-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lanzhengwu 的回复:]
引用 1 楼 phoenixYiYou 的回复:
两个办法:让所有使用discuz的用户重新注册;
第二:研究discuz的表结构,将你网站已经注册的用户信息导入(也就是把你网站的用户表内容导入discuz的用户表);另外,这个过程最好用程序来做,这样, 将来可以做个触发器或者定时任务来自动完成。

非常感谢 。。第二个办法我也这样想的 ,实时的更新discuz的用户表数据 ,不过我想discuz没有提供更好的方法吗 ??

froole兄 能不能再详细点呢 ???
[/Quote]
你定时的话这个时间如何设置好呢?1秒?一分钟?还有,1、在discuz注册的新用户如何处理?2、在网站登陆的用户访问论坛要不要2次登陆?3、在论坛登陆的用户访问网站要不要2次登陆?
houdelei 2009-07-30
  • 打赏
  • 举报
回复
关注中!
mlliqiushi 2009-07-28
  • 打赏
  • 举报
回复
我是不是可以认为,楼主可以用数据库同步呢?
可以设定同步时间,几小时同步一次,服务器应该可以承受吧!~
hcqhappy 2009-07-27
  • 打赏
  • 举报
回复
这个帖子不错 涨见识
图_钉 2009-07-26
  • 打赏
  • 举报
回复
我以前也做过这个东西,
首选不建议直接读取Discuz中用户表数据;其次,所有用户都重新注册也不现实;另外,使用定时器什么的我个人认为有碍性能,效率不高。
我在开发项目的时候,使用的是异步请求,比如:在你的网站中写一个类,用于对请求的数据打包成XML格式,然后发送到Discuz中,最后是接受返回的XML包,再处理。而Dizcuz中也要写一个类,用于接受XML包,并处理后返回。
我以前用的是asp,代码如下:
Java的没写过,要是需要C#的话,联系我QQ:54335020


'XML数据 发送类
Class SendXML
Public Estate,GetData,GetAppid,MessageCode',myXML_AppID,myXML_Urls
'Estate:最终结果状态。-1:失败;1:成功。
'GetData:保存返回的 Dictionary 对象数据(键:系统程序标识;值:响应XML数据)。
'MessageCode:发送数据并返回后的处理信息。
Private XmlDoc,XmlHttp,ArrUrls,mXML

'构造函数
Private Sub Class_Initialize()
Set mXML=New ManageXML
ArrUrls = Split(Trim(myXML_Urls),"|")
MessageCode = ""
Estate = "0"
Set GetData = Server.Createobject("Scripting.Dictionary")
Set XmlDoc=mXML.createDocument("<?xml version=""1.0"" encoding=""gb2312""?><root/>")
mXML.AddNode XmlDoc.documentElement,mXML.CreateNode(XmlDoc,"appid",1,myXML_AppID)
End Sub
'析构函数
Private Sub Class_Terminate()
If IsObject(XmlDoc) Then Set XmlDoc = Nothing
If IsObject(GetData) Then Set GetData = Nothing
If IsObject(mXML) Then Set mXML = Nothing
End Sub

'创建新节点,并返回
'nName:节点名称
'nType:节点类型
'nValue:节点值
Public Property Get CreateNode(nName,nType,nValue)
Set CreateNode=mXML.CreateNode(XmlDoc,nName,nType,nValue)
End Property

'获取发送包XML中的节点对象
'XPath:XPath查询语法字符串
Public Property Get GetSendNode(XPath)
Set GetSendNode=mXML.GetNode(XmlDoc.documentElement,XPath)
End Property
'获取返回包XML中的节点对象
'GetAppid:要获取的系统标识
'XPath:XPath查询语法字符串
Public Property Get GetReturnNode(GetAppid,XPath)
Set GetReturnNode=mXML.GetNode(GetReturnXml(GetAppid).documentElement,XPath)
End Property

'获取发送的XML文档对象
Public Property Get GetSendXml()
Set GetSendXml=XmlDoc
End Property
'获取返回XML文档对象,当该值不为NULL时,其为XML对象。
'GetAppid:要获取的系统标识
Public Property Get GetReturnXml(GetAppid)
Dim GetXmlDoc
GetReturnXml = Null
If GetAppid <> "" Then
GetAppid = Lcase(GetAppid)
If GetData.Exists(GetAppid) Then
Set GetReturnXml = GetData(GetAppid)
End If
End If
End Property

'打印发送请求XML文档对象
Public Sub PrintSendXml()
mXML.PrintXML XmlDoc
End Sub
'打印返回XML文档对象
'GetAppid:要获取的系统标识
'myApi_Obj.PrintReturnXml
Public Sub PrintReturnXml(GetAppid)
mXML.PrintXML GetReturnXml(GetAppid)
End Sub

'发送 XML 数据包
Public Sub Send()
Dim i,GetXmlDoc,LoadAppid,iEstate,EstateStr
Set Xmlhttp = Server.CreateObject("MSXML2.ServerXMLHTTP.3.0")
Set GetXmlDoc = mXML.createDocument("")
For i = 0 to Ubound(ArrUrls)
XmlHttp.Open "POST", Trim(ArrUrls(i)), false
XmlHttp.SetRequestHeader "content-type", "text/xml"
XmlHttp.Send XmlDoc
'Response.Write mXML.strAnsi2Unicode(xmlhttp.responseBody)
If GetXmlDoc.LoadXml(XmlHttp.responseText) Then
LoadAppid = Lcase(GetXmlDoc.documentElement.selectSingleNode("appid").Text)
GetData.add LoadAppid,GetXmlDoc
iEstate = GetXmlDoc.documentElement.selectSingleNode("status").Text
Select Case CStr(iEstate)
Case "-1" EstateStr="失败"
Case "0" EstateStr="部分成功"
Case Else EstateStr="成功"
End Select
If iEstate="-1" Then
Estate="-1"
Else
Estate="1"
End If
MessageCode = MessageCode & "程序标识:" & LoadAppid & " 状态:" & EstateStr & "<br>"
MessageCode = MessageCode & GetXmlDoc.documentElement.selectSingleNode("message").Text & "<br>"
If iEstate = "-1" Then
Exit For
End If
Else
Estate="-1"
MessageCode = "请求数据错误!"
Exit For
End If
Next
Set GetXmlDoc = Nothing
Set XmlHttp = Nothing
End Sub
End Class

'XML数据 接收类
Class InceptXML
Public Estate
'Estate:获取状态。1:数据接收成功;0:数据接收失败。
Private XmlDoc,mXML

'构造函数
Private Sub Class_Initialize()
Set mXML=New ManageXML
Set XmlDoc = mXML.createDocument("")
XmlDoc.Load(Request)
If XmlDoc.parseError.errorCode <> 0 Then
Estate="0" '数据接收失败
Else
Estate="1" '数据接收成功
End If
End Sub
'析构函数
Private Sub Class_Terminate()
If IsObject(XmlDoc) Then Set XmlDoc = Nothing
If IsObject(mXML) Then Set mXML = Nothing
End Sub

'获取接收的XML文档对象
Public Property Get GetInceptXml()
Set GetInceptXml=XmlDoc
End Property
'打印接收的XML文档对象
Public Sub PrintInceptXml()
mXML.PrintXML XmlDoc
End Sub

'获取接收包XML中的节点对象
'XPath:XPath查询语法字符串
Public Property Get GetNode(XPath)
Set GetNode=mXML.GetNode(XmlDoc.documentElement,XPath)
End Property
End Class

'XML数据 返回类
Class ReturnXML
Private XmlDoc,mXML

'构造函数
Private Sub Class_Initialize()
Set mXML=New ManageXML
Set XmlDoc=mXML.createDocument("<?xml version=""1.0"" encoding=""gb2312""?><root/>")
End Sub
'析构函数
Private Sub Class_Terminate()
If IsObject(XmlDoc) Then Set XmlDoc = Nothing
If IsObject(mXML) Then Set mXML = Nothing
End Sub

'返回 XML 数据包
'appid:当前程序标识
'estate:程序执行状态。-1:失败;0:部分成功;1:成功。
'message:响应信息
Public Function Return(appid,estate,message)
mXML.AddNode XmlDoc.documentElement,mXML.CreateNode(XmlDoc,"appid",1,appid)
mXML.AddNode XmlDoc.documentElement,mXML.CreateNode(XmlDoc,"status",1,estate)
mXML.AddNode XmlDoc.documentElement,mXML.CreateNode(XmlDoc,"message",1,message)
mXML.PrintXML XmlDoc
End Function

'获取返回的XML文档对象
Public Property Get GetReturnXml()
Set GetReturnXml=XmlDoc
End Property
'打印返回的XML文档对象
Public Sub PrintReturnXml()
mXML.PrintXML XmlDoc
End Sub

'获取返回包XML中的节点对象
'XPath:XPath查询语法字符串
Public Property Get GetNode(XPath)
Set GetNode=mXML.GetNode(XmlDoc.documentElement,XPath)
End Property

'创建新节点,并返回
'nName:节点名称
'nType:节点类型
'nValue:节点值
Public Property Get CreateNode(nName,nType,nValue)
Set CreateNode=mXML.CreateNode(XmlDoc,nName,nType,nValue)
End Property
End Class

'XML数据 处理类
Class ManageXML
'用字符串或XML文档创建Document对象,并返回
'Str:要加载的字符串或XML文件路径
Public Property Get CreateDocument(Str)
Dim XmlDoc
Set XmlDoc = Server.CreateObject("msxml2.FreeThreadedDOMDocument.3.0")
XmlDoc.ASYNC = False
If Reg(Str,"^.*\.xml$",True,True)=True Then
XmlDoc.Load(Str)
ElseIf Len(Str)<8 Or Left(Str,2)<>"<?" Then
Str="<?xml version=""1.0"" encoding=""gb2312""?>"&Str
XmlDoc.LoadXml Str
ElseIf Len(Str)>0 Then
XmlDoc.LoadXml Str
End If
Set CreateDocument=XmlDoc
End Property
'获取节点对象
'Node:目标节点的父节点对象,如Document对象的根节点为:XmlDoc.documentElement
'XPath:XPath查询语法字符串
Public Property Get GetNode(Node,XPath)
If Node.selectSingleNode(XPath) is Nothing Then
Set GetNode = Nothing
Else
Set GetNode = Node.selectSingleNode(XPath)
End If
End Property
'创建新节点,并返回
'XmlDoc:Document对象
'nName:节点名称
'nType:节点类型
'nValue:节点值
Public Property Get CreateNode(XmlDoc,nName,nType,nValue)
Dim Node
Set Node=XmlDoc.CreateNode(nType,nName,"")
Node.Text=nValue
Set CreateNode=Node
End Property
'添加新节点
'Parent:父节点
'Node:要添加的节点对象
Public Sub AddNode(Parent,Node)
Parent.AppendChild(Node)
End Sub
'打印XML数据
'obj:要打印的XML数据对象 或 XML文档的字符串表现形式
Public Sub PrintXML(obj)
Response.Clear
'Response.ContentType = "text/xml"
Response.CharSet = "gb2312"
Response.Expires = 0
If VarType(obj)=8 Then
If Reg(obj,"^<\?xml.*$",True,True)=False Then obj="<?xml version=""1.0"" encoding=""gb2312""?>"&vbNewLine&obj
Response.Write obj
Else
Response.Write "<?xml version=""1.0"" encoding=""gb2312""?>"&vbNewLine&obj.documentElement.XML
End If
Response.End()
End Sub
'字符串编码
'str:要编码的字符串
Public Function AnsiToUnicode(ByVal str)
Dim i, j, c, i1, i2, u, fs, f, p
AnsiToUnicode = ""
p = ""
For i = 1 To Len(str)
c = Mid(str, i, 1)
j = AscW(c)
If j < 0 Then
j = j + 65536
End If
If j >= 0 And j <= 128 Then
If p = "c" Then
AnsiToUnicode = " " & AnsiToUnicode
p = "e"
End If
AnsiToUnicode = AnsiToUnicode & c
Else
If p = "e" Then
AnsiToUnicode = AnsiToUnicode & " "
p = "c"
End If
AnsiToUnicode = AnsiToUnicode & ("&#" & j & ";")
End If
Next
End Function
'字符串解码
'asContents:要解码的字符串
Public Function strAnsi2Unicode(asContents)
Dim len1,i,varchar,varasc
strAnsi2Unicode = ""
len1=LenB(asContents)
If len1=0 Then Exit Function
For i=1 to len1
varchar=MidB(asContents,i,1)
varasc=AscB(varchar)
If varasc > 127 Then
If MidB(asContents,i+1,1)<>"" Then
strAnsi2Unicode = strAnsi2Unicode & chr(ascw(midb(asContents,i+1,1) & varchar))
End If
i=i+1
Else
strAnsi2Unicode = strAnsi2Unicode & Chr(varasc)
End If
Next
End Function
'正则表达式模式匹配,成功返回:True;否则返回False
'strng:要测试的字符串
'patrn:匹配的正则表达式模式
'ignore:是否区分大小写。False:区分;True:不区分。
'global:全部匹配还是只匹配第一个。True:全局;False:只匹配第一个。
Public Function Reg(strng,patrn,ignore,global)
Dim regEx
Set regEx = New RegExp
regEx.Pattern = patrn
regEx.IgnoreCase = ignore
regEx.Global = global
Reg = regEx.Test(strng)
End Function
End Class
tiandiqing 2009-07-13
  • 打赏
  • 举报
回复
直接把Discuz的用户在线统计那写成js文件,放在Discuz应用的某个目录下,然后在你的网页下<script src="http://xxxx/在线统计.js"></script>
denys 2009-07-13
  • 打赏
  • 举报
回复
discuz用户同步的确有点麻烦。最好下个数据库文档仔细研究下,然后决定用什么方法!
骄傲青蛙 2009-07-13
  • 打赏
  • 举报
回复
1 官方弄个ucenter就是方便大家整合, uchome,discuz要整合会员模块,其实就是整合uccenter

会员注册时,同时分别往ucenter,和你的程序添加数据, 会员登录也是一样

2 要么把你自己的会员表拆了, 直接用ucenter的会员表





Bevin_chen 2009-07-13
  • 打赏
  • 举报
回复
可以借用ucenter思想
加载更多回复(51)

81,115

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧