Проблема с регистрацией MySQL
#1

Здравствуйте, у меня возникло 2-ве проблемы с регистрацией и авторизацией в системе БД mySQL. Прошу помощи!)

1) - При регистрации на сервере в базу не записывается Никнейм персонажа

Код:
   if(dialogid == DIALOG_REGISTER) //Регистрация
   {
	if(response)
	{
     if(strlen(inputtext) == 0)
     {
     ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "{ffd800}Регистрация", "{ffffff}Введите пароль", "Далее", "");
     }
     else
     {
     new query[255], temp[100];
     new PlayerName[MAX_PLAYER_NAME];
     mysql_real_escape_string (inputtext, temp);
     format ( query, sizeof query, "INSERT INTO `users` (`login`, `password` ) VALUES ( '%s', '%s')", PlayerName[playerid], temp);
     mysql_function_query ( dbHandle, query, false, "", "" ) ;
     ShowPlayerDialog(playerid, DIALOG_LOGIN,DIALOG_STYLE_INPUT, "{ffd800}Авторизация", "введите пароль", "Далее", "");
    }
    }
    else{}
   }
2) - Авторизация, находит аккаунт, но если вводить пароль, верный, система его отвергает

Код:
   if(dialogid == DIALOG_LOGIN) //Авторизация
   {
    if(response)
	{
    if(strlen(inputtext) == 0)
    {
    ShowPlayerDialog(playerid, DIALOG_LOGIN,DIALOG_STYLE_INPUT, "{ffd800}Авторизация", "{ffffff}Окошко пустое, введите пароль", "Далее", "");
    }
    else
    {
    new query[255], temp[128];
    new PlayerName[MAX_PLAYER_NAME];
    format(query, sizeof query, "SELECT * FROM `users` WHERE `login` = '%s' AND `password` = '%s' LIMIT 1",
PlayerName[playerid], temp) ;
    mysql_real_escape_string(inputtext, temp);
    mysql_function_query(dbHandle, query, true, "PlayerLogin", "i", playerid);
    }
    }
    else{}
   }
Код:
forward PlayerLogin (playerid);
public PlayerLogin (playerid)
{
    new rows, fields, temp[255];
    cache_get_data(rows,fields);
    if(rows)
    {
     ShowPlayerDialog(playerid, DIALOG_TEAM, DIALOG_STYLE_LIST, "{ffd800}Выбор команды", "Синие\nКрасные", "Далее", "");
    }
    else
    {
     SendClientMessage(playerid, 0xff9900AA, "Неверный пароль");
     ShowPlayerDialog(playerid, DIALOG_LOGIN,DIALOG_STYLE_INPUT, "{ffd800}Авторизация", "Введите пароль", "Далее", "");
    }
    return 1;
}
Reply
#2

Это либо мой код, либо ты кодишь как я(даже название переменных).

new PlayerName[MAX_PLAYER_NAME]; - ты создаёшь, но никнейм-то пустой(GetPlayerName), в этом вся проблема.
Reply
#3

Quote:
Originally Posted by Jebster
Посмотреть сообщение
Это либо мой код, либо ты кодишь как я(даже название переменных).
Ахаха, это из какого-то шаблона, может он был и твой, я прост в mySQL не рублю нихрена, вот изучаю шаблоны
Reply
#4

Quote:
Originally Posted by Jebster
Посмотреть сообщение
new PlayerName[MAX_PLAYER_NAME]; - ты создаёшь, но никнейм-то пустой(GetPlayerName), в этом вся проблема.
Извиняюсь, конечно, я прописал через GetPlayerName(...); Никакого рез-та, только хуже стало, теперь он даже аккаунт не распознает.
Reply
#5

Удали везде new PlayerName[MAX_PLAYER_NAME];
К глобальным переменным new PlayerName[MAX_PLAYERS][MAX_PLAYER_NAME];
Далее делаем следующие.
Quote:

public OnPlayerConnect(playerid)
{
GetPlayerName(playerid, PlayerName[playerid], MAX_PLAYER_NAME);
//Ваш код
return 1;
}

Reply
#6

PHP код:
new query[255], temp[128];
    new 
PlayerName[MAX_PLAYER_NAME];
    
format(querysizeof query"SELECT * FROM `users` WHERE `login` = '%s' AND `password` = '%s' LIMIT 1",
PlayerName[playerid], temp) ; 
>>

PHP код:
new query[128];
    
format(querysizeof query"SELECT * FROM `users` WHERE `login` = '%s' AND `password` = '%s' LIMIT 1",
PlayerName[playerid], inputtext) ; 
Reply
#7

Эм...все перепробовал, никакого результата, менял Temp на inputtext, менял переменные, все бестолку...Аккаунт распознается, но не принимает пароль из БД + не записывается имя при регистрации(распознает аккаунт, если в базу никнейм самому вписать)
Reply
#8

ТЫ ЗАСОВЫВАЕШЬ В ЗАПРОС ПУСТУЮ ПЕРЕМЕННУЮ, ЧТО ТЫ ОЖИДАЕШЬ ТОГДА ?

PHP код:
new PlayerName[MAX_PLAYER_NAME]; 
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)