Регистрация в игре

Итак уже сделаны первые наброски, первый наш экран - экран привествия и заодно логгона, с него можно уйти на регистрацию или на вход в игру.
Первым делом перепишем код проверк пользователя (там любой новый логин безусловно регистрировался)
int checkUser(char *s,char *p)
{

for(map::iterator i=userList.begin();i!=userList.end();i++)
{
if (i->second.nick == s)
if (i->second.pass==string(p))
return i->second.id;
else
return -2;
}
return -1;
}

Пока оставим, что пароль у нас храниться в текстовом (plain text) виде.
Затем из вырезанного кода сделаем процедуру регистрации
int registerUser(char *l,char *p1,char *p2,char *email)
{
if (strcmp(p1,p2)) return -1;

int max=0;
for(map::iterator i=userList.begin();i!=userList.end();i++)
{
if (i->second.id>max) max=i->second.id;
if (i->second.nick == l)
return -2;
}

max++;

TUser u;
u.nick = l;
u.pass = p1;
u.id = max;
u.color = get_color(max);
u.email = email;
userList[max] = u;

return max;
}

Допустим, что для регистрации проверяем на уникальность логина, сохраняем пароль и электронную почту.
В процедуре обработки интерфейса два урла будем показывать без проверки на логин, это главная страница (/) и страница регистрации (/register).
Для упрощения набьем html код в шаблоны ввиде текстовых файлов, будем подгружать их с диска, простейшей функцией
string loadTemplate(char *s)
{
char buffer[512];
sprintf(buffer,"template/%s.html",s);
FILE *in=fopen(buffer,"r");
if (!in) return "Ошибка загрузки шаблона";

string ss;

while(fgets(buffer,511,in))
{
ss+=buffer;
}

fclose(in);
return ss;
}

В обработке страницы регистрации проверяем нет ли POST данных - если есть вызываем функцию registerUser, если нет подгружаем html шаблон регистрации, если регистрация успешна, то автоматически присваиваем сессии ид игрока и делаем редирект на страницу /game.
Знаете очень бесит, когда после регистрации вас просят опять пройти процедуру идентификации.