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

lanzhengwu 2009-07-09 08:51:43
加精
现在网站已经成形(基于JAVA开发,部署在Tomcat下,数据库:mysql) ,想基于网站加一个论坛 ,下了一个Discuz ,部署在apache下可以运行了 。以前没用过Discuz ,不知道怎么使网站用户数据和Discuz用户数据保持一致呢 ,因为网站已经成形 ,用户表已经不可能改了 ,Discuz估计也是一样 ,所以他们用同一张用户表似乎不大容易 ..有没这方面经验的大虾呢 ?? 先谢了 。。
...全文
3389 74 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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,122

社区成员

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

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