发新话题
打印

[讨论] 【数据库重名】问题的研究结果,及【粗略解决方法】希望有人能完善下。

【数据库重名】问题的研究结果,及【粗略解决方法】希望有人能完善下。

PS:没有耐心的 和对数据库完全不通的,以及对这方面不感兴趣的请pass。我自己都觉得头晕~~~~~~~~~~魔力私服,最新魔力宝贝私服技术交流' p' o7 `8 W1 \& T
bbs.mocwww.com( t- L* n+ j. i
相信现在很多人的数据库都会出现重名角色被替换的情况。
% @7 ]: w- G5 E# O" D) w0 S/ bbbs.mocwww.com这种情况实际上是由数据库中的几个字段造成的,
7 v3 b+ V2 U( p0 f7 d魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表首先我们来分析一下数据库表
! _+ @9 I  i$ ~/ i魔力私服,最新魔力宝贝私服技术交流# C2 O( B+ j7 n% Q7 c
tbl_user 这个 是存放角色登入账号的。其中包括:魔力私服,最新魔力宝贝私服技术交流$ G0 b* h2 t3 Z8 H- r
AccountID AccountPassword EnableFlg TrialFlg DownFlg ExpFlg SequencNumber UseFlg BadMsg CdKey ID RegTime ip safeword HellScore
; r& v8 i4 |+ l: L" U6 d( i- O魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
' P: W% o( V" V0 M) Q" Sbbs.mocwww.com这里基本英文大家也明白了
4 b$ V5 |' o6 l/ N& L; X—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートEnableFlg 这个就是决定账号是否冻结的 另外 这里影响到重名删号问题的字段是
# u5 @. W( f5 C6 ]! oSequencNumber 这个字段就是代表你该账号开角色的序列号。每建立一个角色 该字段自动+1 删除角色不减 魔力私服,最新魔力宝贝私服技术交流* Z- y0 C1 m% s' x4 t) p% A
这个字段直接影响到
/ g4 o: J* l4 _- f  F妖城在线论坛tbl_character 即人物表 的第49列数据 即 RegistNumber,就是 人物注册序列号
& ^; U0 T* s6 P( H' K9 f  w7 ?: kbbs.mocwww.com实际上这里才是关键,当建立人物的名字和该字段的序列号完全相同时,系统将会自动将数据Update【更新】而不是Insert【插入】
* _  x, H0 n, J2 ^就好像说你登出 要存档,这个存档就会替换原来那个存档 这种方式—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート, V& c* \. g& T! H

! J9 V, i0 V  i* w, k魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表即后面建立的人物替换了该行人物的资料。当然 CDKey也被替换,所以 前一个账号的CDKey中 即账号中 人物就消失了。
2 C2 t& s$ [4 w) h( \) B( c; f1 ubbs.mocwww.com
( g; }5 [0 M$ K. G3 @# }3 c妖城在线论坛
5 X. K  c! j' F魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表tbl_item 的第91个字段 RegistNumber 决定了 人物物品的位置,以及tbl_skill 中的字段并未被替换消失。
2 A2 G# B8 @+ d( U; Z/ E3 u. m& S4 \所以魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表7 i2 M: \4 V" A9 {, n6 n2 Q, C3 B
恢复人物的方法是。
8 I: F  Z4 Y% R. D" @" u$ e, k在被替换的账号中,建立角色名和原来完全相同的角色,并且把tbl_character 中的 RegistNumber 改回和
# |. [3 z$ h/ }/ `—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートtbl_item 中的 该账号原来角色的 RegistNumber 相同 即可—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート- z4 S  @  k  X% T2 a/ ]+ ~  q4 |
这个RegistNumber 在tbl_skill的第二个字段也一样。魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表$ i% Y( a& l9 r" k
决定了该人物的技能 魔力私服,最新魔力宝贝私服技术交流- u' J9 K) J9 P. H5 ^# L: v
那么 原来的人物的技能和物品都将会被回复~~~~~~~~~~~~~~~~~~
+ r% H& V" N# B魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表妖城在线论坛! B. _- n& [; O% b- o& `
小建议。 相隔一段时间 更改一下 注册的页面的SQL语句代码~ 使得注册的SequenceNumber不一样就行了魔力私服,最新魔力宝贝私服技术交流. v: V  H$ t$ U7 R6 @
方法如下 打开注册网站的注册页
9 q3 n) ~  C) ?7 R+ ~$ U9 I—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート找到这一行SQl语句:
0 D. |6 b0 ?0 R- y/ U" Q—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートbbs.mocwww.com6 I8 X$ O4 ^" @$ }* [& ~
$sql2="insert into tbl_user (AccountID,AccountPassword,EnableFlg,TrialFlg,DownFlg,ExpFlg,SequenceNumber,UseFlg,BadMsg,CdKey,safeword,RegTime,ip,HellScore) values ('$id','$pass','1','8','0','0','100','1','0','$id','$mlhy','$data','$userip','$regscore')";
$ _: A# g- Q. Z; N7 d—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート魔力私服,最新魔力宝贝私服技术交流2 }5 {+ I% ]; c- q5 m7 c
后字段的 '100'就是 创建人物序号
9 |: J) K" z2 [  ~自己更改即可造成重复也不会消失的人物。魔力私服,最新魔力宝贝私服技术交流4 c9 j6 B! X( J5 c
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート& U: D2 t$ j$ C& F* |/ ^, X0 a
给高手们的建议:魔力私服,最新魔力宝贝私服技术交流7 l0 s4 c: C" K
由于本人的汇编很烂(我搞C++的)bbs.mocwww.com: v- x+ S! Z# p- b4 i
所以不想研究gmsv或者cg_190的 IDA反汇编编译。魔力私服,最新魔力宝贝私服技术交流% f( K0 s9 O2 i

/ b% b: u0 Y. S0 Z: Y* z! E' t/ Q: n魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表懂这方面的朋友可以进行以下操作:
9 y% n- ?8 N6 Y9 g4 u& H, \bbs.mocwww.com1加入验证组。进行character表的Name行字段验证,如有重名的返回错误不让创建人物即可,这个 貌似同一个账号创建相同名字的人物时会提示,调用即可。
3 K* S6 d& T) S魔力私服,最新魔力宝贝私服技术交流2更改更新人物时候的SQL语句,不是进行Name 和 RegistNumber 的判断, 改为 CDKEY和 RegistNumber的判断魔力私服,最新魔力宝贝私服技术交流7 p  S* c4 a( m# x) ]* x
这样的话还是允许重名,但至少不会再删除。
+ l1 m" L: H: ?, u3 Q—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
; p7 [) Y" \( W, _, ]$ R妖城在线论坛PS:另外听说过某些人可以通过网站验证重名,之类的。。。。。。魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表+ Z# w' J  `& Z6 z5 [2 b
我暂时是没时间搞这么多了,这里只写给觉得有用的人看看,如果有用 ,写出了不允许建立重名账号的
5 o& F! f* K- F—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート希望能共享一下 谢谢。
本帖最近评分记录
  • 完美汉化 妖力 +5 继续别停,参考下黄昏 2009-4-30 08:15

TOP

嗯 之所以会删除是因为创建角色的语句为
* e' g( i: I* W: F  cbbs.mocwww.comREPLACE tbl_character VALUES……  J1 C; a- j0 ~0 W0 d& ~- k
查mysql手册可知
' g* X' a8 f9 f0 i. ~魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表REPLACE的运行与INSERT很相像。只有一点除外,如果表中的一个旧记录与一个用于PRIMARY KEY或一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除。
( n$ \7 ~3 C; p' G1 G. ~8 ^—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート嗯 解决方法论坛里面有人很早就发出来了……  去掉name的索引就可以了……
1 r% {4 S, y: u" ^# v妖城在线论坛
! R$ S' t1 _* _+ M3 z, b, ~魔力私服,最新魔力宝贝私服技术交流不过这样不删除数据,但是还会有重名的角色存在
' f* E9 [! F9 o' p: t& k. m# a妖城在线论坛完善的解决方法可以从2方面考虑
( k' V+ w( u! T, k, i: _) R; J; @魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表gmsv方面,汇编添加语句判断(流传一种比较类似的解决重名办法,但是会导致停端时玩家数据保存失败,等待完善中……)
( M$ @; \+ U; kcg方面就是hook 创建角色的函数并结合php来判断是否能成功创建角色了,可能被绕过,不是很完美……
本帖最近评分记录
  • 完美汉化 妖力 +1 的确是这么回事 2009-4-30 08:14

在我今日的悲伤里,最为苦涩的是我昨日欢乐的回忆。

TOP

我验证过 增加索引和 去掉索引都是一样的 只要RegistNumberbbs.mocwww.com( t& o" S. X9 k7 E6 \
和Name一样 就一定会被删除

TOP

发新话题