Bevor ich anfange: Ich möchte keinen Server aufmachen, nicht das ihr denkt, ich wäre wieder ein weiteres Kiddy, was versucht einen Server zu eröffnen. Eigentlich möchte ich durch das Scripten nur mein Wissen erweitern.
Also, ich sitze gerade an dem Login/Register-System. Die clientseitigen Scripte poste ich jetzt mal nicht, da sie nicht relevant sind.
addEvent("onClientRegister",true)
addEvent("onClientLogin",true)
--------REGISTRIERUNG--------
function userRegistration(reg_name,reg_pass,localPlayer)
local user_name = reg_name
local user_pass = md5(reg_pass)
local user_points_reg = 0
local user_money_reg = 0
local user_level_reg = 0
local user_rank_reg = "user"
local userTestHandler = dbQuery(mysqlHandler,"SELECT Name FROM spieler WHERE Name=?",reg_name)
local result,num_affected_rows = dbPoll(userTestHandler,-1)
if num_affected_rows == 0 then
outputChatBox("Number of affected rows: "..num_affected_rows)
dbExec(mysqlHandler,"INSERT INTO spieler(Name,Password,Points,Money,Level,Rank) VALUES (?,?,?,?,?,?)",user_name,user_pass,user_points_reg,user_money_reg,user_level_reg,user_rank_reg)
triggerClientEvent("closeLoginWindow",root)
spawnPlayer(localPlayer,0,0,3)
setCameraTarget(localPlayer)
else
outputChatBox("ACCOUNT EXISTIERT BEREITS")
end
end
addEventHandler("onClientRegister",root,userRegistration)
--------LOGIN--------
function userLogin(login_name,login_pass,localPlayer)
local user_name = login_name
local user_pass = md5(login_pass)
local userLoginNameControl = dbQuery(mysqlHandler,"SELECT Name FROM spieler WHERE Name=?",user_name)
local result,num_affected_rows_name = dbPoll(userLoginNameControl,-1)
local userLoginPassControl = dbQuery(mysqlHandler,"SELECT Password FROM spieler WHERE Password=?",user_pass)
local result,num_affected_rows_pass = dbPoll(userLoginPassControl,-1)
if num_affected_rows_name == 1 and num_affected_rows_pass == 1 then
outputChatBox("Du hast dich eingeloggt")
elseif num_affected_rows_name == 0 and num_affected_rows_pass == 1 then
outputChatBox("Name existiert nicht")
elseif num_affected_rows_name == 1 and num_affected_rows_pass == 0 then
outputChatBox("Passwort existiert nicht")
elseif num_affected_rows_name == 0 and num_affected_rows_pass == 0 then
outputChatBox("Name und Passwort existieren nicht")
end
end
addEventHandler("onClientLogin",root,userLogin)
Alles anzeigen
Die Registrierung klappt wunderbar und es ist auch alles in der Datenbank, jetzt hänge ich nur beim Login.
So wie ich es probiert habe, kann es z.B. so laufen:
Es sind 2 Spieler registriert, Herbert mit dem Passwort 123 und Hannes mit dem Passwort 12345. Das Problem: Herbert kann sich nun mit dem Passwort 12345 einloggen.(was ja auch völlig logisch ist)
Ich habe es dann so probiert:
local userLoginPassControl = dbQuery(mysqlHandler,"SELECT Password FROM spieler WHERE Name=?",user_name)--In der Spalte Passwort die Zeile suchen, in der der Name der Variable user_name entspricht.
local result,num_affected_rows_pass = dbPoll(userLoginPassControl,-1)
for results, password in pairs(result) do --Da result ja eine Tabelle ist
if results == 1 then
if password == user_pass then --Elemente(gibt ja nur eins) der Tabelle durchgehen und schauen ob sie user_pass entsprechen
outputChatBox("KLAPPT")
end
end
end
Der Testoutput kommt aber nicht, habt ihr vielleicht eine Idee?