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

lanzhengwu 2009-07-09 08:51:43
加精
现在网站已经成形(基于JAVA开发,部署在Tomcat下,数据库:mysql) ,想基于网站加一个论坛 ,下了一个Discuz ,部署在apache下可以运行了 。以前没用过Discuz ,不知道怎么使网站用户数据和Discuz用户数据保持一致呢 ,因为网站已经成形 ,用户表已经不可能改了 ,Discuz估计也是一样 ,所以他们用同一张用户表似乎不大容易 ..有没这方面经验的大虾呢 ?? 先谢了 。。
...全文
3370 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
gccr 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)
php版mysql大数据库备份和恢复工具,这是亮仔修改的无乱码版 在原faisunSQL 4.0的基础上,针对数据备份过程中出现乱码的问题,做了优化. 增强的功能: 1.自动识别数据库版本,对于MySQL 4.1以上,备份数据时提示选择字符集. 2.导入数据时,提示原数据库编码,并自动识别. 3.增加导入目标数据库字符集选项. 4.支持GBK、BIG5、UTF8之间的编码转换(见特别说明4). 特别说明: 1.乱码问题一般仅出现在MySQL 4.1/MySQL 5 版本以后,如果你的数据库低于这个版本,基本可以不用考虑这个问题. 2.确保原始数据的完整是至关重要的.就算导出时出现乱码,但只要原始数据完整,总有解决的办法.所以,导出时数据库字符集的选择必须正确,保证导出数据无乱码.一般为GBK,UTF8或Latin1.导出后,可以用文本编辑器先查看一下,看是否出现问号(?)等乱码. 3.导出和导入数据编码要保持一致(见特别说明4). 4.虽然程序目前支持GBK、BIG5、UTF8之间的编码转换,但这种转换不是安全的.首先你的目标导入服务器要支持iconv,即在导入时如果"编码转换功能"提示为支持,则可以使用此功能.反之则不可以.其次,转换时的数据必须是"干净"的.即GBK、BIG5、UTF8不能混合.如果你想将原来备份出的GBK数据导入到编码为UTF8数据库,则你的GBK数据中仅能含有GBK或GB2312的简体中文字符.不可以出现BIG5等繁体字符,否则转换将失败.基本上,一般的博客/论坛数据都不能保证这种纯净性,谁也不能保证你的文章中不会混合使用简体和繁体文字,所以这种跨字符集的导入导出数据难度很大.绝对不要轻易尝试这种游戏.目前的主流论坛如Discuz、PHPWind等都提供支持GBK、BIG5和UTF8的不同程序.你在最初安装时,一定先想好自己需要那种字符的程序,一旦选定,以后不是迫不得已,不要更改.以上仅针对 5.鉴于上面特别说明4,如果你是从MySQL 4.0.X/MySQL 3的老数据版本导入到MySQL 4.1/MySQL 5的高数据库版本,导入时请选择GBK编码.如果是UTF8编码的数据,如我的博客(http://www.zhouliang.name)采用WordPress程序,默认使用UTF8编码,则只能在MySQL 4.1/MySQL 5以上的数据库中导入导出,因为低版本的MySQL不支持UTF8. 6.以上说明仅针对本程序而言,在编码转换方面,不排除通过其他手段实现的可能性. 程序使用中出现任何问题(编码转换方面),欢迎与我联络: 我的E-Mail: php@zhouliang.name 本程序讨论主页:http://www.zhouliang.name/archives/198.htm 我的博客:http://www.zhouliang.name 此程序只是针对"乱码"问题做了改进,faisunSQL 4.0其他方面的故有功能效率与本增强版无关,如有问题请联系原作者.
Discuz网页斗地主插件V2SP3正式稳定版,消耗会员积分,支持多人联机和X2.5版本! 这是一款能集成到论坛的社交游戏 。 插件特点: 1.可与社区积分数据共享-消耗用户积分(站长可在启动.exe里控制积分消耗数量) 2.提高用户之间的粘度与活跃度(增加发帖量)。 斗地主是一款扑克类游戏 该游戏用FLASH制作,可在网页上运行,该游戏由问答娱乐 www.wdmir.net开发 目前最新稳定版本为 V2SP3 特别说明本版是本地安装服务端版,服务端需要有独立主机或 VPS才能运行起来 用户数据全部储存在您的服务器上,非第三方接入应用 *游戏服务端需要运行在有EXE权限的主机上,配置好IP 游戏客户端是flash网页 版,有一个ddz.php,网页上加个链接就可以了 可以很轻松的和论坛整合在一起 官方QQ交流群:52534477 (欢迎交流) ---------------------------------------------- V2 SP3正式完美版 通过连续多天外网不重启测试 通过多人外网游戏测试 加入并完善了防作弊自动匹配功能 修复启动.exe设置按钮点击无反应问题 性能优化,在人数更多时,占用内存比V2 SP2少25% discuz积分字段增加自定义4 聊天室脏话和广告过滤功能 www.wdmir.net ---------------------------------------------- 常见问题 安装出现这种问题··应用程序正常初始化(0x0000135)失败 答:下donetfx2.0.exe安装上就行了,里面有个快捷方式-》打开无法运行请下载安装donetfx2.0,点击就能下载了 斗地主升级到专业版要多少钱? 答:本软件没有专业版,付费版本与免费版本功能完全相同,唯一区别是最大同时在线人数的限制,免费版最大为50人 这个只支持utf8吗? 答:非UTF-8的DZ版本也支持的,在本软件里都将统一转化为utf-8国际化编码 为什么 一切都很正常 就是不能扣除积分啊 游戏显示已经抠出来 但是实际中并没有扣啊 ? 答:实际扣的是金钱, DZX1.5积分计算规则: 总积分=发帖数+精华帖数*5+威望*2+金钱+贡献,因此本系统实际是通过增加或减少金钱来使总积分增加或减少 这插件用的积分是论坛自己的积分吧? 答:恩 新版本 怎么连接不了数据库 由于目标计算机积极拒绝 答:表前缀写错了,或相应端口的服务没开启 用户名已存在? 答:并不是说不存在,有一些测试数据在里面,你注册个新号试下 不是VPS主机架设不了吧? 答:对,需要VPS或独立主机 最便宜的VPS主机目前现在1200左右都可拿到,128M内存,2G硬盘运行服务端程序没有问题,如果你自已有机子,有外网IP,也可架设,只是带宽小而已 表前缀对了.请问相应端口的服务怎么开启? 比如:9500端口 如何开启? 答:记录服务(record server)使用的是9500端口,它启动成功就开启了 记录服务主要作用是连接MYSQL数据库,需要修改配置文件里的连接参数,如数据用户名,密码之类 那个我用linux系统不能执行exe啊! 答:您装个虚拟机,里面装个WINDOWS系统就可以运行了 linux下面的虚拟机是相当稳定的,比windows上的虚拟机强多了 再就是linux下面开发一套服务端程序,安装和启动会比较麻烦,命令行,相信您也是知道的 干啥用? 答:消耗论坛积分,? 会员交流? 增加盈利途径,为论坛发展提供动力 DZ斗地主 !请问登陆是直接显示密码不足6位是什么问题哦 答:重新注册个号,邮箱填超过6位 是拿邮箱当密码的,可能邮箱没填 90秒不开牌改成60秒,从哪里改?T出 答:90秒不开牌改成60秒,在客户端的client_config.xml里 的autoLeaveRoom,单位为毫秒,最小为30000,即30秒 游戏的服务端 放在vps vps配置有要求吗? 答:恩,VPS内存要求不小于128MB, 如果还运行着论坛和MYSQL,则要求不小于256MB 为什么我的金钱不能和论坛同步呢? 答:数据库连接字符串localhost改成10.51.1.1 localhost写了不起作用,论坛里有人发现了 现在可以了,但是游戏里显示的金钱数量和我论坛里的不一致呢 记录服务里有自定积分字段,论坛里显示的是总和,自然不一样 论坛头像调取不到是什么原因呢 ? 答:在你论坛\template\default\ddz里面有个client_config.xml, 用记事本打开它,把/bbs

81,095

社区成员

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

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