Jump to content
  • 0

Problema dialog


DeLeT.

Question

Am creeat un dialog in care sa poata da si EMAILUL in baza de date dat imi creeaza un tabel nou doar cu emailul.

 

 case DIALOG_REGISTER:// daca se va selecta dialogul register
        {
            if(!response)
                    return Kick(playerid);// daca se va apasa pe butonul Exit ii va da kick
            if(response)// daca se apasa pe Butonul inregistrare se vor face urmatoarele verificari
            {
                if(!strlen(inputtext))// daca nu e scris nimic la parola
                        return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Parola incorecta!", "Introdu-ti o parola pentru a te inregistra pe server! n", "Inregistreaza", "Exit");// ii va da din nou dialogul register cu mesajul specific

                GetPlayerIp(playerid, ip, sizeof(ip));// definim ip-ul de mai sus
                mysql_format(handle, query, sizeof(query), "INSERT INTO evo_account (Nume, Parola, Money, IP) VALUES ('%s', '%e', '0', '%s')", GetName(playerid), inputtext, ip);// se insereaza in tabelul cu conturi numele playerului, parola pe care a scris-o si ip pe care il are
                mysql_query(handle, query);// se va trimite setarile si se va interoga callback-ul OnRegistration
                ShowPlayerDialog(playerid,DIALOG_EMAIL, DIALOG_STYLE_INPUT, "Email", "Enter your Email:", "Ok", "Cancel");
            }
            return 1;
        }
        case DIALOG_LOGIN:// daca se va selecta dialogul de login
        {
            if(!response) return Kick(playerid);// si se va apasa pe butonul exit ii va da kick
            if(response)//daca se apasa pe butonul LOGARE se va face urmatoarele verificari
            {

                if(!strlen(inputtext))// daca nu a scris nimic la parola
                        return ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Parola incorecta!", "Te rog sa iti introduci parola corecta, pentru a te loga pe server.", "Logare", "Exit");// ii va da dialogul cu login cu mesajul specific
                // daca se va trece peste aceasta verificare se vor face urmatoarele:
                mysql_format(handle, query, sizeof(query), "SELECT * FROM `evo_account` WHERE `Nume`='%e' AND `Parola` = '%e'", GetName(playerid),inputtext);// va fi selectata parola de la tabelul cu conturi
                mysql_tquery(handle, query, "OnLogin", "i", playerid);// se va face apel la baza si se va interoga CallBackUl OnLogin (Tquery = take query sau ia interogare in romana)
            }
            if(!response)
            {
              ShowPlayerDialog(playerid, DIALOG_EMAIL, DIALOG_STYLE_MSGBOX, "Character Gender", "Are you a male or a female?", "Male", "Female");
            }
            return 1;
        }
        case DIALOG_EMAIL:// LOGIN MENU
        {
            if(!response)
                    return Kick(playerid);// daca se va apasa pe butonul Exit ii va da kick
            if(response)// daca se apasa pe Butonul inregistrare se vor face urmatoarele verificari
            {
                if(!strlen(inputtext))// daca nu e scris nimic la parola
                        return ShowPlayerDialog(playerid, DIALOG_EMAIL, DIALOG_STYLE_PASSWORD, "Parola incorecta!", "Introdu-ti o parola pentru a te inregistra pe server! n", "OK", "Exit");// ii va da din nou dialogul register cu mesajul specific

                GetPlayerIp(playerid, ip, sizeof(ip));// definim ip-ul de mai sus
                mysql_format(handle, query, sizeof(query), "INSERT INTO  evo_account (email) VALUES ('%s')", inputtext);// se insereaza in tabelul cu conturi numele playerului, parola pe care a scris-o si ip pe care il are
                mysql_query(handle, query);// se va trimite setarile si se va interoga callback-ul OnRegistration
                SpawnPlayer(playerid); // ii da spawn
            }
            return 1;
        }

Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Folosind INSERT, tu acolo practic creezi încă o linie în baza de date. Ca să o pui pe linia creată pentru player, folosește UPDATE.

 

Adica, în loc de:

mysql_format(handle, query, sizeof(query), "INSERT INTO  evo_account (email) VALUES ('%s')", inputtext);// se insereaza in tabelul cu conturi numele playerului, parola pe care a scris-o si ip pe care il are
                mysql_query(handle, query);// se va trimite setarile si se va interoga callback-ul OnRegistration

Ar fi:

 

new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, MAX_PLAYER_NAME);
mysql_format(handle, query, sizeof(query), "UPDATE `evo_account` SET `email` = '%e' WHERE `Nume` = '%e'", inputtext, playername);
mysql_query(handle, query);

 

Ca să înțelegi, când player-ul își face cont, un nou item se creează în tabelul „evo_account”. Când își bagă e-mail-ul, tu trebuie să updatezi acel item creat în acel tabel. Ca să faci asta, îl identifici după ceva anume. Aici l-am identificat după nume.

În mysql_format îți recomand să folosești specifier-ul „%e”, ca să te păzești de sql injection. Poți citi despre sql injection aici: http://www.w3schools.com/sql/sql_injection.asp.

Dacă vrei să înveți limbajul SQL, poți intra aici: http://www.w3schools.com/sql/default.asp

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more details you can also review our Terms of Use and Privacy Policy.