[TUTORIAL] Database login with ActionScript
Posted: 28 Feb 2010, 10:34
To get this tutorial to work, find and edit this line in your config file
Now lets add an extension to this zone:
Now place this ActionScript code into the dbLogin.as extension file
In the client side, add this code:
If you have any questions, feel free to post them, and I will happily reply
You also need to setup a database connection:<Zone name="<!-- REPLACE WITH YOUR ZONE NAME -->" uCountUpdate="<!-- REPLACE WITH BOOLEAN -->" buddyList="<!-- MAX BUDDY LIST COUNT -->" maxUsers="<!-- MAX USERS-->" customLogin="true">
Code: Select all
<DatabaseManager active="true">
<Driver>org.h2.Driver</Driver>
<ConnectionString>jdbc:h2:tcp://localhost/~/test</ConnectionString>
<!-- Using MySQL Results in
<Driver>com.mysql.jdbc.Driver</Driver>
<ConnectionString>jdbc:mysql://127.0.0.1:3306/test</ConnectionString>
-->
<UserName>DB USERNAME</UserName>
<Password>DB PASS</Password>
<TestSQL><![CDATA[SELECT COUNT(*) FROM <!-- USER TABLE -->]]></TestSQL>
<MaxActive>10</MaxActive>
<MaxIdle>10</MaxIdle>
<OnExhaustedPool>fail</OnExhaustedPool>
<BlockTime>5000</BlockTime>
</DatabaseManager>Code: Select all
<Extensions>
<extension name="dbLogin" className="dbLogin.as" type="script" />
</Extensions>Code: Select all
function init() {
dbase = _server.getDatabaseManager();
}
function destroy(){
//trace("dbLogin extension Closed");
}
function handleRequest(cmd, params, user, fromRoom){
trace("XT Message received: User: " & user & "\n Room: " & fromRoom & "\n Command: " & cmd); //We don't need any requests
}
function handleInternalEvent(evt) {
if (evt.name == "loginRequest") {
trace("recieved event");
var error = "";
var nick = evt["nick"].toLowerCase();
nick = _server.escapeQuotes(nick);
var pass = evt["pass"];
pass = _server.escapeQuotes(pass);
var chan = evt["chan"]; //Remove this, and the sky will fall on your head
var qRes = dbase.executeQuery("SELECT * FROM usertable WHERE username='" & nick & "' LIMIT 1;");
if (qRes != null) {
for (var i = 0; i<qRes.size(); i++) {
var row = qRes.get(i);
if(row['password'] == pass){
error = "";
} else {
error = "Incorrect Password";
}
}
} else {
error = "Invalid User";
}
var res = new Object();
if(error != ""){
res._cmd = "logKO";
} else {
var login = _server.loginUser(nick, pass);
if(login.success){
error = "";
res._cmd = "logOK";
} else {
error = login.error;
}
res.err = error;
}
_server.sendResponse(res,-1,null,chan);
} //END FIRST BLOCK. DO NOT REMOVE
} //DO NOT REMOVE ME EITHERCode: Select all
function doLogin(user, pass){
zone = "simpleChat";
if (!_global.isBusy)
smartfox.login(zone, user, pass)
}
smartfox.onExtensionResponse = function(resObj:Object) {
if (resObj._cmd == "logOK") {
// Login Success Example Code
_global.myName = resObj.name
gotoAndStop("chatRoom")
} else if (resObj._cmd == "logKO") {
// Login failed example code
gotoAndStop("login");
error_txt.text = resObj.err;
}
}