Szerző Téma: Login hiba  (Megtekintve 1174 alkalommal)

Nem elérhető n88

Login hiba
« Dátum: 2015. Augusztus 26. - 15:00:08 »
0
Sziasztok!
Nem tudok belépni ezeket írja Console-ban:
https://p1.picsto.re/gNXqB.PNG
https://p1.picsto.re/UdRet.PNG
A file:
 
function playerRegister(player, username, password, password2)
local md5password = md5(password)
if(password~=password2)then
triggerClientEvent(\"info\",player,\"A felhasználónév túl rövid!\", \"red\")
return
end
if(string.len(username)<5)then
triggerClientEvent(\"info\",player,\"A felhasználónév túl rövid!\", \"red\")
return
end
if(string.len(password)<5)then
   triggerClientEvent(\"info\", player, \"A jelszó túl rövid!\", \"red\")
return
end
serial = getPlayerSerial(player)
dbQuery(function(qh, player, username, md5password)
   local a, b, c = dbPoll(qh, 0)
   if b > 0 then
      outputChatBox(\"Neked már van accountod\")
      regisztalhat = false
      return
   end         
end, {player,username,md5password}, mysql:getConnection(), (\"SELECT * FROM characters WHERE charactername=\'\" .. safecharname .. \"\' AND account=\'\" .. mysql:escape_string(id) .. \"\' AND cked = 0\")
dbQuery(function(qh, player, username, md5password)
   local result, rows, errorMsg = dbPoll(qh, 0)
   if not regisztalhat then return end
   if rows > 0 then
      exports.sg_box:addNotification(\"Ez a felhasználónév már foglalt!\",\"red\")
   else
      local _, id = mysql:query_free(\"INSERT INTO accounts SET serial = \'\".. serial ..\"\', username = \'\"..tostring(username)..\"\', password = \'\"..tostring(md5password)..\"\'\", true)
      exports.sg_box:addNotification(\"Sikeresen regisztráltál!\",\"green\")
   end
end, {player,username,md5password}, mysql:getConnection(), \"SELECT * FROM accounts WHERE username = ? LIMIT 1\", username)
end
addEvent(\"playerRegister\", true)
addEventHandler(\"playerRegister\", getRootElement(), playerRegister)

 
Előre is köszi a segítséget!

Nem elérhető Feher

  • 123
    • Profil megtekintése
Login hiba
« Válasz #1 Dátum: 2015. Augusztus 27. - 01:15:23 »
0
Hali,
A 26. sorba nem zártad be az egyik zárójelet, a második képről meg annyit ha triggelsz egy eventet a másik oldalra, akkor hozzá kell adni az eventet amit triggeltél pl.
Client side:
 
triggerServerEvent(\"asd\", source)

 
Server side:
 
addEvent(\"asd\", true)
addEventHandler(\"asd\", root, funkcio)

Nem elérhető n88

Login hiba
« Válasz #2 Dátum: 2015. Augusztus 27. - 18:53:28 »
0
Először is köszönöm a választ!
Nem tudok rájönni, hogy hol nincsen lezárva a zárójel, próbálkoztam vele de akkor is hibákba ütköztem.
A server.luában benne van ez:
 
addEvent(\"playerLogin\", true)
addEventHandler(\"playerLogin\", getRootElement(), playerLogin)

 
a client.luában pedig ez:
 
triggerServerEvent(\"playerLogin\", getLocalPlayer(), getLocalPlayer(), guiGetText(user), guiGetText(pw))

 
, és továbbra is arra panaszkodik :(

Nem elérhető Xenius

  • 668
    • Profil megtekintése
Login hiba
« Válasz #3 Dátum: 2015. Augusztus 28. - 09:55:00 »
0
Ez a kódsor úgy ahogy van kuka.
Nem is értem hogy miért szerver oldalon ellenőrzöd hogy a két jelszó egyezik-e, illetve hogy a felhasználónév tartalmaz-e minimum 5 karaktert.
A dbQuery rész is úgy ahogy van rossz, ha callback-et használsz a kód ugyan úgyfutni fog tovább, csak jelen esetben mivel egyedül teszteled nem lesz elváltozás. Ilyen esetekben közvetlenül a callback-be írd azt hogy mi fusson le akkor ha például a játékos még nem regisztrált, illetve a felhasználónevet és a serial ellenőrzés is megoldható egyetlen sql query-ben.
A másik, hogy az az id is amivel a játékos regisztrál rosszul van lekérdezve, mivel az az exportált \"query_free\" callback nélkül kéri le az értéket, így nagyobb lesz a szerver oldali cpu használat, erre az mta wiki is figyelmezetet. Ilyen esetben dbExec-el vidd be az adatot, majd dbQuery-vel kérdezd le az utoljára bevitt ID-t. (Ahogy látom, te nem csinálsz semmit az ID-vel szóval feleslegesen kérezed le, szóval a példában lévő dbQuery rész hanyagolható)
Példa:
 
dbExec(sql, \"INSERT INTO test SET a=1, b=2\")
dbQuery(function(qh)
local res,rows,err=dbPoll(qh,0)
if rows > 0 then
local id = res[1][\"id\"]
outputChatBox(id)
end
end, sql, \"SELECT id FROM test WHERE id = LAST_INSERT_ID()\")

 
Amúgy pedig a 24. sorodban ott egy ( szóval ne csodálkozz ha hiba üzenetet ír a debug.
Valamint, az mta adatbázis funkcióknál teljesen felesleges az escape string, mivel alapból megteszi helyetted ha jól írod meg a query-t.
Példa:
 
dbExec(sql, \"INSERT INTO test SET a=?,b=?\", 1, 2)
« Utoljára szerkesztve: 2015. Augusztus 28. - 09:58:03 írta Xenius »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal