如做到 FLASH 输入账号 密码去取得数据库中的数据, 目前需要.net 或php做中转。方法有sendandload和WebService较为常用(目前AS2 AS3本人不熟不知道能否直接与数据沟通)。 但大家假想,如果用FLASH客户端直接去从取。如果页面地址暴露将会有什么后果。。不能想都知道。 最理想的处理方法则是 用FLASH 把账号,密码传给FMS,让FMS去做和数据库登录验证的工作。这样才能达到最安全的机制.如下图的验证机制。

从图上可以看出,验证的主要还是由.net和php做验证。FMS只是做了把账号密码中转了一次。但这样做法有很大用途。这样让玩家无法得取.net的处理页面具体地址。要想知道就得把FMS服务器给黑了才知道,比起写在FLASH客户端用破解软件要安全的多得多。特别是现在FLASH破解软件满天飞的时代
但sendandload和WebService的处理方式是异步的,要经过访问和返回的步骤。特别在网络不佳的时候还有等待的处理。下面的例子用sendandload来简单说明怎么处理异步的FMS验证操作。
=========FMS端======== function userLogin(_newClient,usrName,usrPwd){ trace("用户登录") thisObj=this //用户登录GameLogin() var Login = new LoadVars() Login.onLoad = function(success) { if (success) { if (this.usrOkFlag == "ok") { trace(usrName+"登录成功") application.acceptConnection (_newClient); //取数据过程 _newClient.myData=this.data //发送给客户端,登录成功。让它初始 _newClient.call("init") } } else { application.rejectConnection (_newClient, "登录失败!") } }; sendUrl="http://www.52ria.com/xxx.aspx?usrName="+usrName+"&usrPwd"+usrPwd+"&" Login.sendAndLoad(sendUrl, Login, "GET"); // }
application.onConnect = function(newClient,usrName,usrPwd) { userLogin(newClient,usrName,usrPwd) }; //
大家可以看到 在登录的时候去调用一个function 把 new LoadVars() 写在该函数中。这样同时N人进入, 他会自动处理多个function。而每个function中就是一个new LoadVars。并把处理的结果调回了相应的function中达到异步的接受事件.
|