Sziasztok. Van egy kis login részem, full hülye vagyok a MySQL-hez, azt elmondom. Lekérem a MySQL-ből az accounts táblában lévő username részt. Eddig megvan, viszont ezek után hogyan lehetne azt, hogy ha már van ilyen felhasználónév regisztrálva, akkor ne engedje ezt az adott illetőnek?
MySQL scriptem: https://pastebin.com/RXk2ztwf
Illetve egyáltalán helyesen kértem én ezt le?
local check = exports.mysql:_QuerySingle(\"select * from accounts where username = ? \",username)
Köszönöm a segítségeteket! :) Igából nem az UPDATE-t használom, viszont maga az oldal segített jobban értelmezni az adott dolgot, amit köszönöm : ) ( végül rájöttem, hogy amit keresek az a dbExec )
dbExec( connection, \"INSERT INTO accounts VALUES (?,?,?,?,?)\", 1, \"username\",\"password\",\"email\",\"ip\" )
Nos, az előzőt megoldottam végül is. Viszont már tényleg egy utolsó kérdésem lenne. Sikeresen megcsináltam, hogy ha nem az adott felhasználónév/jelszó nem a kiválasztott géphez van társítva, akkor nem tud bejelentkezni, viszont nem tudom megcsinálni, hogy ha van már ilyen serial az accounts-ba, akkor ne tudjon létrehozni új felhasználót :/ . Esetleg valaki még ebben tudna segíteni?
addEvent(\"loginPlayer\", true)
function loginPlayer(player, username, password, serial)
local check = exports.mta_connection:_QuerySingle(\"SELECT * FROM accounts WHERE username = ?\",username)
local serial = getPlayerSerial(player)
if check then
local checkPass = check.password
local checkSerial = check.serial
if ( checkSerial == serial ) then
if (checkPass == password) then
logIn(player,tostring(username),tostring(password))
outputDebugString(\"User is loggined!\")
triggerClientEvent(player,\"showHide\",getRootElement())
else
exports[\"notices\"]:addNotification(root,\"Hibás felhasználónév/jelszó!\",\'error\')
end
else
exports[\"notices\"]:addNotification(root,\"Ez a felhasználó nem ehhez a számítógéphez van társítva!\",\'error\')
end
else
exports[\"notices\"]:addNotification(root,\"Hibás felhasználónév/jelszó!\",\'error\')
end
end
addEventHandler(\"loginPlayer\", getRootElement(),loginPlayer)
addEvent(\"registerPlayer\", true)
function registerPlayer(player, username, password, email, serial, ip, money)
local serial = getPlayerSerial(player)
local check = exports.mta_connection:_QuerySingle(\"SELECT * FROM accounts WHERE serial = ?\",serial)
if ( check ~= serial ) then
local account = getAccount(username)
if account == false then
local ip = getPlayerIP(player)
local money = 100
exports.mta_connection:_Exec(\"INSERT INTO accounts(username,password,email,serial,ip,money) values (?,?,?,?,?,?)\",username,password,email,serial,ip,money)
local addAccount = addAccount(tostring(username), tostring(password))
if addAccount then
exports[\"notices\"]:addNotification(root,\"A felhasználó sikeresen létrehozva!\",\'succes\')
else
exports[\"notices\"]:addNotification(root,\"Hiba történt! Keress fel egy fejlesztőt a problémával kapcsolatban!\",\'error\')
end
else
exports[\"notices\"]:addNotification(root,\"Ez a felhasználónév már foglalt! Válassz másikat!\",\'error\')
end
else
exports[\"notices\"]:addNotification(root,\"Ehhez a számítógéphez van felhasználó társítva!\",\'error\')
end
end
addEventHandler(\"registerPlayer\", getRootElement(), registerPlayer)
Nos, hát jelenleg így állok, viszont ugye ezzel az a baj, hogy az accounts-ban az első sort íratja ki, amit legelsőnek talál. Hogyan tudnám megcsinálni, hogy az összeset keresse ki?
local serial = getPlayerSerial(player)
local query = dbQuery(connect,\"SELECT * FROM accounts WHERE serial = serial\", serial)
local result, num_rows = dbPoll(query, -1)
if not ( result == nil ) then
outputServerLog(result[1][\"serial\"])
else
dbFree(query)
end
Vagy igazából itt van a MySQL scriptje, amit ugye youtube-ról másoltam. Esetleg eltudná valaki mondani, mit jelent maga a querySingle? Előre is köszönöm.
local connection = nil
addEventHandler(\"onResourceStart\",resourceRoot,function(resource)
connection = dbConnect(\"mysql\",\"dbname=ig_mta;host=localhost;port=3306;\",\"root\",\"martinka02\")
if connection then
outputDebugString(getResourceName(resource) .. \" : connected to database.\")
return true
else
outputDebugString(getResourceName(resource) .. \" : Unable to connect with database. Please contact Developer.\")
return false
end
end
)
function _Query( ... )
if connection then
local query = dbQuery(connection, ... )
local result = dbPoll(query,-1)
return result
else
return false
end
end
function _QuerySingle(str,...)
if connection then
local result = _Query(str,...)
if type(result) == \'table\' then
return result[1]
end
else
return false
end
end
function _Exec(str,...)
if connection then
local query = dbExec(connection,str,...)
return query
else
return false
end
end