Szerző Téma: MySQL Login Hiba  (Megtekintve 839 alkalommal)

MySQL Login Hiba
« Dátum: 2016. július 06. - 11:05:09 »
0 Show voters
Hali!
Próbálgatom a bejelentkezés rendszert megcsinálni, mivel a regisztráció már működik, viszont ez nem akar menni.
Ez szerver oldalon van, ez maga a bejelentkezés:
 

function onLogin ( player, user, pass )
local login = mysql_query(handler,\"SELECT * FROM accounts WHERE pName = \'\"..mysql_escape_string( handler, user )..\"\' AND pPassword = \'\"..mysql_escape_string( handler, sha256(pass) )..\"\';\")
if login then
local rows = mysql_num_rows(login)
if rows == 1 then
   outputChatBox(\"* You successfully logged in your account!\", player, 255, 255, 255)
else
   outputChatBox(\"* Login failed!\", player, 255, 255, 255)
end
mysql_free_result(login)
end
end
addEvent( \"onLogin\", true )
addEventHandler( \"onLogin\", getRootElement(), onLogin )

 
Majd ezzel meghívom kliens oldali szkriptben:
 

triggerServerEvent ( \"onLogin\", getRootElement(), getLocalPlayer())

 
Viszont mikor beírom pl. hogy /login admin
akkor ilyen errort ír ki a konzol ablakba:
 

bad argument 1# to \'mysql_escape_string\' (mysql handler expected, got userdata)

 
Ez mitől lehet ? :( Előre is köszönöm!
« Utoljára szerkesztve: 2016. július 06. - 23:29:34 írta anGeL »

MySQL Login Hiba
« Válasz #1 Dátum: 2016. július 06. - 23:16:59 »
0 Show voters
Szia!
2 argumentumot nem triggerelsz át (user, pass)
A getLocalPlayert triggereled csak át, a többit nem.
Így lenne helyes:
 

valamiuser = \"jozsi\"
valamipass = \"szupertitkosjelszo\"
triggerServerEvent(\"onLogin\", getRootElement(), getLocalPlayer(), valamiuser, valamipass)

 
Persze a valamiuser és a valamipass helyére nem ez kerül, hanem értelemszerűen...
Robika1

MySQL Login Hiba
« Válasz #2 Dátum: 2016. július 07. - 08:40:52 »
0 Show voters
Idézetet írta: Robika1 date=1467839819\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"62162\" data-ipsquote-contentclass=\"forums_Topic
Szia!
2 argumentumot nem triggerelsz át (user, pass)
A getLocalPlayert triggereled csak át, a többit nem.
Így lenne helyes:
 

valamiuser = \"jozsi\"
valamipass = \"szupertitkosjelszo\"
triggerServerEvent(\"onLogin\", getRootElement(), getLocalPlayer(), valamiuser, valamipass)

 
Persze a valamiuser és a valamipass helyére nem ez kerül, hanem értelemszerűen...
Robika1
 
Köszi a válaszod, próbáltam de nem megy, ugyanazt az errort írja. :(
Átírtam csak egy \"/bejelentkez [jelszó]\" parancsra, ami szerver oldalon fut, de ugyanazt az errort írja mikor loginolni akarok.
Így néz ki jelenleg:
 

function LoginPlayer(playerSource,commandName,password)
       local user = getPlayerName(playerSource)
  local login = mysql_query(handler,\"SELECT * FROM accounts WHERE pName = \'\"..mysql_escape_string( handler, user )..\"\' AND pPassword = \'\"..mysql_escape_string( handler, sha256(password) )..\"\';\")
        if login then
                local rows = mysql_num_rows(login)
                if rows == 1 then
                        outputChatBox(\"* You successfully logged in your account!\", playerSource, 255, 255, 255)
                else
                        outputChatBox(\"* Login failed!\", playerSource, 255, 255, 255)
                end
                mysql_free_result(login)
        end
end
addCommandHandler(\"bejelentkez\",LoginPlayer)

 
Mi lehet a gond ? :(
« Utoljára szerkesztve: 2016. július 07. - 10:52:24 írta anGeL »

MySQL Login Hiba
« Válasz #3 Dátum: 2016. július 08. - 00:02:55 »
0 Show voters
Nem néztem meg eléggé a hibaüzenetet, a handlerral lehet a baj (?).
bad argument 1# to \'mysql_escape_string\' (mysql handler expected, got userdata)
Van MySQL csatlakozásod? handler = mysql_connect(...)
Ha van és így sem jó, próbáld meg a mysql_escape_string funkció nélkül kipróbálni a scriptet.
Robika1

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal