Board logo

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

作者: 逆灵    时间: 2009-4-29 16:46     标题: 【数据库重名】问题的研究结果,及【粗略解决方法】希望有人能完善下。

PS:没有耐心的 和对数据库完全不通的,以及对这方面不感兴趣的请pass。我自己都觉得头晕~~~~~~~~~~
0 k- z0 O6 B: U0 F妖城在线论坛
1 n0 M: N( v3 K2 O" i5 j+ l—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート相信现在很多人的数据库都会出现重名角色被替换的情况。
  B$ I9 _, ]8 W; f! Q魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表这种情况实际上是由数据库中的几个字段造成的,  ]' U' Q& }9 H0 u( O$ \- y" W8 L
首先我们来分析一下数据库表
1 }3 ^! W1 `. Pbbs.mocwww.com—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート8 q' r' @/ S+ {- C, I
tbl_user 这个 是存放角色登入账号的。其中包括:魔力私服,最新魔力宝贝私服技术交流0 J8 l5 k  @5 S8 |
AccountID AccountPassword EnableFlg TrialFlg DownFlg ExpFlg SequencNumber UseFlg BadMsg CdKey ID RegTime ip safeword HellScore
) K8 b" t, E  a2 \/ S" E# e—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート" v( C9 V9 m9 K+ D5 X
这里基本英文大家也明白了
% V5 H* h* S4 l+ |魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表EnableFlg 这个就是决定账号是否冻结的 另外 这里影响到重名删号问题的字段是
8 I8 `7 o1 ?8 \+ @4 N, O魔力私服,最新魔力宝贝私服技术交流SequencNumber 这个字段就是代表你该账号开角色的序列号。每建立一个角色 该字段自动+1 删除角色不减 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート4 p4 I& U- `& o( t! H# S
这个字段直接影响到
& I) ?, m1 V5 |( A魔力私服,最新魔力宝贝私服技术交流tbl_character 即人物表 的第49列数据 即 RegistNumber,就是 人物注册序列号
7 \9 @- m: T0 N1 p# S$ E实际上这里才是关键,当建立人物的名字和该字段的序列号完全相同时,系统将会自动将数据Update【更新】而不是Insert【插入】妖城在线论坛! {- H7 W" D% s$ m
就好像说你登出 要存档,这个存档就会替换原来那个存档 这种方式
2 i# ?6 g7 i1 F
* i6 ]5 v! A- Z! Fbbs.mocwww.com即后面建立的人物替换了该行人物的资料。当然 CDKey也被替换,所以 前一个账号的CDKey中 即账号中 人物就消失了。0 r  E2 A) N# ^" @* T/ d& M

8 F5 |# ?9 c, ^4 q- c8 G: A妖城在线论坛
5 ^1 C/ }2 `% j2 _魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表tbl_item 的第91个字段 RegistNumber 决定了 人物物品的位置,以及tbl_skill 中的字段并未被替换消失。—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート6 Q- J( Y  C" q/ c
所以
) o) x# W1 V( \  K  C& I魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表恢复人物的方法是。妖城在线论坛2 C" ^5 N: J: ~( f8 q! \% q2 r
在被替换的账号中,建立角色名和原来完全相同的角色,并且把tbl_character 中的 RegistNumber 改回和—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート4 q& t9 C1 n3 K
tbl_item 中的 该账号原来角色的 RegistNumber 相同 即可
6 u* A3 o6 u% A/ O魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表这个RegistNumber 在tbl_skill的第二个字段也一样。妖城在线论坛8 b: s* [' T  g3 J2 N6 k: K4 b
决定了该人物的技能 魔力私服,最新魔力宝贝私服技术交流' g& w9 R% ^# v7 x; u
那么 原来的人物的技能和物品都将会被回复~~~~~~~~~~~~~~~~~~妖城在线论坛' `7 I% S  h2 p
妖城在线论坛# @, w+ G( B2 ?1 `2 T
小建议。 相隔一段时间 更改一下 注册的页面的SQL语句代码~ 使得注册的SequenceNumber不一样就行了
- M% @* {& k. X# y& O7 q9 |6 q4 C1 n方法如下 打开注册网站的注册页妖城在线论坛# j! W4 X. D- V, z4 ~1 e  b
找到这一行SQl语句:魔力私服,最新魔力宝贝私服技术交流' E; A1 u% I1 e- y3 d
bbs.mocwww.com4 _& L0 R' @7 Y: r) r5 C
$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')";
* @6 B" {1 c. `—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
. `7 X, A& k, L: M& Z妖城在线论坛后字段的 '100'就是 创建人物序号bbs.mocwww.com. Z' h; a5 t3 ]
自己更改即可造成重复也不会消失的人物。魔力私服,最新魔力宝贝私服技术交流4 p  N1 {* q& S, l2 `  _

1 o, r1 v$ Z4 O—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート给高手们的建议:
# ?: ^( u+ E/ p4 c% N* C& x; x; V3 X由于本人的汇编很烂(我搞C++的)魔力私服,最新魔力宝贝私服技术交流: z( i  a8 _7 a0 z: o
所以不想研究gmsv或者cg_190的 IDA反汇编编译。
! p# i* o% c7 y8 c  _* T% w1 ]: K) {, k! g6 |  }
懂这方面的朋友可以进行以下操作:魔力私服,最新魔力宝贝私服技术交流: K7 n; u& c% k5 f' E% B
1加入验证组。进行character表的Name行字段验证,如有重名的返回错误不让创建人物即可,这个 貌似同一个账号创建相同名字的人物时会提示,调用即可。魔力私服,最新魔力宝贝私服技术交流' s  v6 i( c4 E  I: X$ m
2更改更新人物时候的SQL语句,不是进行Name 和 RegistNumber 的判断, 改为 CDKEY和 RegistNumber的判断bbs.mocwww.com7 y1 ], ^0 W! C: V' C  ^
这样的话还是允许重名,但至少不会再删除。) @/ W3 Y1 e" F5 @; `
bbs.mocwww.com1 u* A/ j' O% y7 K: k
PS:另外听说过某些人可以通过网站验证重名,之类的。。。。。。魔力私服,最新魔力宝贝私服技术交流' d) K, P+ w- Q4 o+ a" a& E* Y. }
我暂时是没时间搞这么多了,这里只写给觉得有用的人看看,如果有用 ,写出了不允许建立重名账号的* e3 ?% Z/ x& S0 J5 E! i
希望能共享一下 谢谢。
作者: 黄昏    时间: 2009-4-29 19:08

嗯 之所以会删除是因为创建角色的语句为bbs.mocwww.com' E4 z5 j( X: f
REPLACE tbl_character VALUES……妖城在线论坛& \2 b5 d+ M0 H- Z
查mysql手册可知
5 U$ C7 v8 d/ k0 f/ k& UREPLACE的运行与INSERT很相像。只有一点除外,如果表中的一个旧记录与一个用于PRIMARY KEY或一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除。
) z* w: F' z) i" [% e魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表嗯 解决方法论坛里面有人很早就发出来了……  去掉name的索引就可以了……魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表4 n! Z( d3 B' i" M2 R

# g. m" Y4 u& s4 e" Q. I—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート不过这样不删除数据,但是还会有重名的角色存在bbs.mocwww.com9 O! ^# E, `) T! m* F
完善的解决方法可以从2方面考虑
6 s3 C7 ?, W: f2 G. H. J2 U. Y—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートgmsv方面,汇编添加语句判断(流传一种比较类似的解决重名办法,但是会导致停端时玩家数据保存失败,等待完善中……)魔力私服,最新魔力宝贝私服技术交流; u$ p! y' S' E1 L  T
cg方面就是hook 创建角色的函数并结合php来判断是否能成功创建角色了,可能被绕过,不是很完美……
作者: 逆灵    时间: 2009-4-30 01:40

我验证过 增加索引和 去掉索引都是一样的 只要RegistNumber—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート8 I# l: }$ Q3 H% ]! U- Z& D
和Name一样 就一定会被删除




欢迎光临 妖城在线论坛 (http://bbs.mocwww.com/) Powered by Discuz! 6.0.0