00018 {
00019         Database& db = 
GetWeb().
GetDatabase();
00020         
char action[200];
00021         GetForm() -> getvalue(GetFormName(), action, 200);
00022         
if (!strcmp(action, 
"login"))
00023         {
00024                 
char login[200];
00025                 
char passwd[200];
00026                 GetForm() -> getvalue(
"login", login, 200);
00027                 GetForm() -> getvalue(
"passwd", passwd, 200);
00028                 db::Account acct(db, login, passwd); 
00029                 
if (acct.num)
00030                 {
00031                         
long valid = random();
00032                         db::Valid v(db, valid, acct.num);
00033                         v.valid = valid;
00034                         v.account = acct.num;
00035                         v.save();
00036                         
GetWeb().
SetAccount(acct.num);
00037                         
GetWeb().
SetValid(valid);
00038                 }
00039         }
00040         
else
00041         
if (!strcmp(action, 
"register"))
00042         {
00043                 Query q(db);
00044                 
char login[200];
00045                 
char pw1[200];
00046                 
char pw2[200];
00047                 
char sql[1000];
00048                 GetForm() -> getvalue(
"login", login, 200);
00049                 GetForm() -> getvalue(
"passwd", pw1, 200);
00050                 GetForm() -> getvalue(
"passwd2", pw2, 200);
00051                 sprintf(sql, 
"select num from account where login='%s'", q.safestr(login).c_str());
00052                 
long num = q.get_count(sql);
00053                 
if (!num && !strcmp(pw1, pw2) && *pw1)
00054                 {
00055                         db::Account acct(&db);
00056                         acct.name = login;
00057                         acct.pw = pw1;
00058                         acct.save();
00059                 }
00060         }
00061         
else
00062         
if (!strcmp(action, 
"player_select"))
00063         {
00064                 
long num = atol(GetForm() -> getvalue(
"player").c_str());
00065                 db::Player pl(db, num);
00066                 
if (pl.num && pl.account == 
GetWeb().
GetAccount())
00067                 {
00068                         
GetWeb().
SetPlayer(pl.num);
00069                 }
00070         }
00071         
else
00072         
if (!strcmp(action, 
"player_create"))
00073         {
00074                 
char name[200];
00075                 GetForm() -> getvalue(
"player_name", name, 200);
00076                 db::Player pl(db, name);
00077                 
if (!pl.num)
00078                 {
00079                         pl.account = 
GetWeb().
GetAccount();
00080                         pl.name = name;
00081                         pl.save();
00082                         
00083                         {
00084                                 db::Resource r(&db, 
"select * from resource where name='Gold'");
00085                                 r.name = 
"Gold";
00086                                 r.save();
00087                                 db::Playerresource x(db, pl.num, r.num);
00088                                 x.player = pl.num;
00089                                 x.resource = r.num;
00090                                 x.amount = 1000;
00091                                 x.save();
00092                         }
00093                         
00094                         {
00095                                 db::Location loc(&db, 
"select * from location where name='Homesville'");
00096                                 loc.name = 
"Homesville";
00097                                 loc.save();
00098                                 pl.location = loc.num;
00099                                 db::Building b(&db, 
"select * from building where name='Simple cottage'");
00100                                 b.name = 
"Simple cottage";
00101                                 b.beds = 2;
00102                                 b.save();
00103                                 db::Playerbuilding x(db, pl.num, b.num);
00104                                 x.player = pl.num;
00105                                 x.building = b.num;
00106                                 x.location = loc.num;
00107                                 x.save();
00108                         }
00109                         pl.save();
00110                 }
00111         }
00112 }