Страница 1 из 8 123 ... ПоследняяПоследняя
Показано с 1 по 10 из 76

Тема: Создание системы регистрации (MySQL ~R7~)

  1. #1
    Активный пользователь
    Регистрация
    03.03.2012
    Адрес
    Украина
    Возраст
    27
    Сообщений
    100
    Репутация: 24

    Звание: на пути к лучшему

    Сообщение Создание системы регистрации (MySQL ~R7~)

    Обновлено: 03.09.12

    И так представляю вам систему регистрации аккунта на новом плагине MySQL ~R7~ от BlueG'a
    И так что исползуеться, MySQL ~R7~ и regex.
    1. #include
    PHP код:
    #include <a_mysql> // MySQL ~R7~ плагин
    #include <regex> // reGex плагин 
    2. #define
    PHP код:
    #define mysql_host "localhost"
    #define mysql_db "mysql-R7"
    #define mysql_user "root"
    #define mysql_pass ""

    #define TABLE_ACCOUNTS "Accounts" // Таблица с аккаунтами

    #define send(%0,%1) SendClientMessage(%0, -1, %1) 
    3. new
    PHP код:
    new connectionHandleRegEx:checkPass;
    new 
    mysql_query[80], mysql_splayer[144], rowsfields
    4. public OnGameModeInit()

    PHP код:
        connectionHandle mysql_connect(mysql_hostmysql_usermysql_dbmysql_pass);
        if(
    mysql_ping() != 1) print("MySQL соединение, false.");
        
    checkPass regex_build("[A-Za-z0-9А-Яа-я]{6,25}"); 
    5. public OnGameModeExit()
    PHP код:
    mysql_close(connectionHandle); 
    6. public OnPlayerRequestClass(playerid, classid) // Или можете поставить в OnPlayerConnect
    PHP код:
        mysql_format(connectionHandlemysql_query"SELECT `Name` FROM `"TABLE_ACCOUNTS"` WHERE `Name` = '%e'"Name(playerid));
        
    mysql_function_query(connectionHandlemysql_querytrue"OnPlayerRegCheck""d"playerid); 
    7. public OnPlayerDisconnect(playerid, reason)
    PHP код:
    SavePlayer(playerid); 
    8. public OnPlayerSpawn(playerid)
    PHP код:
        if(!GetPVarInt(playerid"Logged")) return send(playerid"Прежде чем заспавниться, нужно быть авторизированым.");
        
    SetPlayerScore(playeridGetPVarInt(playerid"Pl_Level")); 
    9. public OnPlayerText(playerid, text[])
    PHP код:
        if(!GetPVarInt(playerid"Logged")) return send(playerid"Что бы писать в чат, нужно быть авторизированым."); 
    10. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    PHP код:
        switch(dialogid)
        {
             case 
    1://Регистрация
            
    {
                if(!
    strlen(inputtext)) return ShowPlayerDialog(playerid1DIALOG_STYLE_INPUT"Регистрация""Добро пожаловать на сервер!\nВаш аккаунт не зарегистрирован!\n\nВведите пароль:""Далее""Отмена");
                if(!
    regex_match_exid(inputtextcheckPass)) return ShowPlayerDialog(playerid1DIALOG_STYLE_INPUT"Регистрация""Добро пожаловать на сервер!\nВаш аккаунт не зарегистрирован!\n\nВведите пароль:""Далее""Отмена");
                
    OnPlayerRegister(playeridinputtext);
                return 
    1;
            }
            case 
    2://Авторизация
            
    {
                if(!
    strlen(inputtext)) return ShowPlayerDialog(playerid2DIALOG_STYLE_PASSWORD"Авторизация""Здравствуйте!\n\nВы зарегистрированы!\nВведите пароль:""Войти""Отмена");
                
    OnPlayerLogin(playeridinputtext);
                return 
    1;
            }
        } 
    11. В конец мода, ну или куда вам удобно
    PHP код:
    stock Name(i) { new pl[24]; GetPlayerName(ipl24); return pl; }

    forward OnPlayerRegCheck(playerid);
    public 
    OnPlayerRegCheck(playerid)
    {
        if(
    IsPlayerConnected(playerid))
        {
            
    cache_get_data(rowsfields);
            if(
    rowsShowPlayerDialog(playerid2DIALOG_STYLE_PASSWORD"Авторизация""Здравствуйте!\n\nВы зарегистрированы!\nВведите пароль:""Войти""Отмена");
            else 
    ShowPlayerDialog(playerid1DIALOG_STYLE_INPUT"Регистрация""Добро пожаловать на сервер!\nВаш аккаунт не зарегистрирован!\n\nВведите пароль:""Далее""Отмена");
        }
        return 
    1;
    }

    stock OnPlayerRegister(ipassword[])
    {
        
    mysql_format(connectionHandlemysql_query"INSERT INTO `"TABLE_ACCOUNTS"` (`Name`, `Key`) VALUES ('%e', '%e')"Name(i), password);
        
    mysql_function_query(connectionHandlemysql_queryfalse"RegisterCallback","d"i);
        return 
    1;
    }

    forward RegisterCallback(playerid);
    public 
    RegisterCallback(playerid)
    {
        
    send(playerid,"Регистрация прошла успешно, теперь авторизуйтесь!");
        
    ShowPlayerDialog(playerid2DIALOG_STYLE_PASSWORD"Авторизация""Здравствуйте!\n\nВы зарегистрированы!\nВведите пароль:""Войти""Отмена");
        return 
    1;
    }

    stock SavePlayer(i)
    {
        if(!
    GetPVarInt(i"Logged")) return 1;
        
    mysql_format(connectionHandlemysql_splayer"UPDATE `"TABLE_ACCOUNTS"` SET `Level` = '%d'",
        
    GetPVarInt(i"Pl_Level"));
        
    mysql_format(connectionHandlemysql_splayer"%s WHERE `Name` = '%e'"mysql_splayerName(i));
        
    mysql_function_query(connectionHandlemysql_splayerfalse"","");
        return 
    1;
    }

    stock OnPlayerLogin(ipassword[])
    {
        
    mysql_format(connectionHandlemysql_query"SELECT * FROM `"TABLE_ACCOUNTS"` WHERE `Name` = '%e' AND `Key` = '%e'"Name(i), password);
        
    mysql_function_query(connectionHandlemysql_querytrue"LoginCallback","ds"ipassword);
        return 
    1;
    }

    forward LoginCallback(ipassword[]);
    public 
    LoginCallback(ipassword[])
    {
        new 
    string[144], maximum[75];
        
    cache_get_data(rowsfields);
        if(!
    rows)
        {
            if(
    GetPVarInt(i"wrongPass") == 2) return send(i"Вы ввели 3 раза неверный пароль, поэтому были кикнуты сервером."), Kick(i);
            
    SetPVarInt(i"wrongPass"GetPVarInt(i"wrongPass") + 1);
            
    format(stringsizeof(string), "Здравствуйте!\n\nВы зарегистрированы!\n\n______________________________\n\nНеверный пароль(осталось %i/3)\nВведите пароль:"GetPVarInt(i"wrongPass"));
            
    ShowPlayerDialog(i2DIALOG_STYLE_PASSWORD"Авторизация"string"Войти""Отмена");
            return 
    1;
        }
        
    cache_get_field_content(0"Level"maximum), SetPVarInt(i"Pl_Level"strval(maximum));

        
    send(i"Вы успешно авторизовались!");
        
    SetPVarInt(i"Logged"1), SpawnPlayer(i);
        return 
    1;

    SQL(Таблица)

    Автор урока: Jeff_Hardy(Jaws1)

  2. #2
    Ich liebe Deutschland Аватар для Фора
    Регистрация
    19.07.2010
    Сообщений
    3,615
    Репутация: 284

    Звание: как роза среди колючек

    Re: Создание системы регистрации (MySQL ~R7~)

    в общем не плохо молодец.
    Первый....

  3. #3
    Активный пользователь
    Регистрация
    03.03.2012
    Адрес
    Украина
    Возраст
    27
    Сообщений
    100
    Репутация: 24

    Звание: на пути к лучшему

    Re: Создание системы регистрации (MySQL ~R7~)

    Цитата Сообщение от FrostJkeee Посмотреть сообщение
    в общем не плохо молодец.
    Первый....
    Спасибо...

  4. #4
    Активный пользователь
    Регистрация
    02.05.2011
    Возраст
    28
    Сообщений
    1,272
    Репутация: 93

    Звание: скоро придёт к известности

    Re: Создание системы регистрации (MySQL ~R7~)

    Спасибо + твой...
    Welcome

  5. #5
    SYSTEM Аватар для Games
    Регистрация
    28.06.2010
    Адрес
    Moscow
    Возраст
    30
    Сообщений
    1,468
    Репутация: 478

    Звание: - луч света в тёмном царстве

    Re: Создание системы регистрации (MySQL ~R7~)

    Мне понравилось. Неплохая реализация.

    Цитата Сообщение от Jaws1 Посмотреть сообщение
    7. ~ public OnPlayerConnect(playerid)
    PHP код:
        new str[128];
        
    mysql_real_escape_string(Name(playerid), Name(playerid));
        
    format(strsizeof(str),"SELECT `Name` FROM `Accounts` WHERE `Name` = '%s'"Name(playerid));
        
    mysql_function_query(connectionHandlestrtrue"OnPlayerRegCheck","d"playerid); 
    Думаю проще использовать mysql_format. Но зачем?
    А затем, что mysql_format поддерживает плейсхолдер %e.
    Поэтому использование mysql_real_escape_string не будет необходимым.

    Кстати, вот список форматов, которые поддерживает mysql_format:

    PHP код:
    Supported formats: (including precisions)
    - %
    (escapes a string at onceno mysql_real_escape_string() needed)
    - %
    (string)
    - %
    / %(integer)
    - %
    (float)
    - %
    (hex)
    - %
    (binary) 


    Кроме этого, можно при коннекте сохранить пароль игрока. И при авторизации без запросов к СУБД проверять правильность ввода данных.А только после успешной авторизации произвести чтение с MySQL.
    пусто

  6. #6
    Активный пользователь Аватар для Last
    Регистрация
    26.09.2011
    Адрес
    Челябинск
    Возраст
    28
    Сообщений
    625
    Репутация: 88

    Звание: скоро придёт к известности

    Re: Создание системы регистрации (MySQL ~R7~)

    PHP код:
    SpawnPlayer(i), SavePlayer(i); 
    Зачем после авторизации сразу сохранять данные игрока?

  7. #7
    Активный пользователь
    Регистрация
    03.03.2012
    Адрес
    Украина
    Возраст
    27
    Сообщений
    100
    Репутация: 24

    Звание: на пути к лучшему

    Re: Создание системы регистрации (MySQL ~R7~)

    Цитата Сообщение от Last. Посмотреть сообщение
    PHP код:
    SpawnPlayer(i), SavePlayer(i); 
    Зачем после авторизации сразу сохранять данные игрока?
    Спасибо уберу.

  8. #8
    Активный пользователь
    Регистрация
    03.03.2012
    Адрес
    Украина
    Возраст
    27
    Сообщений
    100
    Репутация: 24

    Звание: на пути к лучшему

    Re: Создание системы регистрации (MySQL ~R7~)

    Цитата Сообщение от Games Посмотреть сообщение
    Мне понравилось. Неплохая реализация.


    Думаю проще использовать mysql_format. Но зачем?
    А затем, что mysql_format поддерживает плейсхолдер %e.
    Поэтому использование mysql_real_escape_string не будет необходимым.

    Кстати, вот список форматов, которые поддерживает mysql_format:

    PHP код:
    Supported formats: (including precisions)
    - %
    (escapes a string at onceno mysql_real_escape_string() needed)
    - %
    (string)
    - %
    / %(integer)
    - %
    (float)
    - %
    (hex)
    - %
    (binary) 


    Кроме этого, можно при коннекте сохранить пароль игрока. И при авторизации без запросов к СУБД проверять правильность ввода данных.А только после успешной авторизации произвести чтение с MySQL.

    Спасибо))

  9. #9
    Пользователь Аватар для Trust890
    Регистрация
    15.04.2012
    Адрес
    г. Новосибирск
    Возраст
    28
    Сообщений
    84
    Репутация: 7

    Звание: пока не определено

    Re: Создание системы регистрации (MySQL ~R7~)

    Неплохо, +

  10. #10
    Активный пользователь
    Регистрация
    03.03.2012
    Адрес
    Украина
    Возраст
    27
    Сообщений
    100
    Репутация: 24

    Звание: на пути к лучшему

    Re: Создание системы регистрации (MySQL ~R7~)

    Цитата Сообщение от Trust890 Посмотреть сообщение
    Неплохо, +
    Благодарю)

Страница 1 из 8 123 ... ПоследняяПоследняя

Похожие темы

  1. [MySQL] Создание системы регистрации
    от Snoowker в разделе Уроки MySQL
    Ответов: 256
    Последнее сообщение: 05.06.2015, 23:02
  2. Ответов: 7
    Последнее сообщение: 04.02.2012, 19:05
  3. Ответов: 3
    Последнее сообщение: 31.01.2012, 19:24
  4. Создание новой ролевой системы регистрации пользователей
    от Алексей Александрович в разделе Заказы
    Ответов: 4
    Последнее сообщение: 23.11.2011, 01:00

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •