Zainstalowa?e? modul MySQL? Swoj? drog? odradzam u?ywania tej funkcji poniewa? jak wspomnia? Wielebny gdzie? mo?na ?atwo narobi? bajzlu w bazie. Lepiej korzysta? z funkcji ju? zaimplementowanych do MTA czyli tych:
i chyba zainstalowa?em zrobi?em forlder modules w deathmath'u wgra?em tam plik:
mta_mysql.dll i mtaserver.conf wklei?em to:
<module src="mta_mysql.dll" />
tylko np jak por?wnuje to z xyzzyrp to tam jest folder: shema a w nim jest:
xyzzyrp.sql
i ja tego nie posiadam i nwm czy to potrzebne czy nie hmm
[ Dodano: 2014-06-17, 11:14 ]
upora?em si? z tym lecz teraz mam b??d z tym
addEvent ("Logowanie", true)
addEventHandler ("Logowanie", root,
function (login, haslo, log)
if login and haslo and log then
local md5 = md5(haslo)
local zap2 = dbQuery(baza, "SELECT * FROM users WHERE login='"..log.."'")
if mysql_num_rows(zap2) == 0 then
if (string.len(haslo) >= 5 and string.len(login) >= 3) then
local zap1 = dbQuery(baza, "INSERT INTO users (login, haslo) VALUES ('"..login.."','"..md5pass.."')")
local git = { success=true }
triggerClientEvent ("Zaliczamy", root, git)
else
local haslo = { success=true, komunikat="Haslo min. /6/ znakow, login: min. /3/ znaki!"}
triggerClientEvent("onPassNO", getRootElement(), haslo)
end
else
--mysql_num_rows = 1 (konto istnieje w bazie)
local ist = { success=true, komunikat="Podane konto istnieje juz w bazie danych!" }
triggerClientEvent("onAccountYES", getRootElement(), ist)
end
end
end
)
Funkcje mysql nie wsp??graj? z funkcjami db. Mianowicie zamiast mysql_num_rows uzyj dbPoll, ktory zwraca jako 3 wartosc ilosc obiektow z bazy, ktore zostaly wypisane z kwerendy.
addEvent ("Logowanie", true)
addEventHandler ("Logowanie", root,
function (login, haslo, log)
if login and haslo and log then
local md5 = md5(haslo)
local zap2 = dbQuery(baza, "SELECT * FROM users WHERE login='"..log.."'")
if dbPoll(zap2, 0) then
if (string.len(haslo) >= 5 and string.len(login) >= 3) then
local zap1 = dbQuery(baza, "INSERT INTO users (login, haslo) VALUES ('"..login.."','"..md5pass.."')")
local git = { success=true }
triggerClientEvent ("Zaliczamy", root, git)
else
local haslo = { success=true, komunikat="Haslo min. /6/ znakow, login: min. /3/ znaki!"}
triggerClientEvent("onPassNO", getRootElement(), haslo)
end
else
local ist = { success=true, komunikat="Podane konto istnieje juz w bazie danych!" }
triggerClientEvent("onAccountYES", getRootElement(), ist)
end
end
end
)
addEvent ("Rejestracja", true)
addEventHandler ("Rejestracja", root,
function (reglog, hasreg, log)
if reglog and hasreg and log then
local md5pass = md5(hasreg)
local zap = dbQuery (baza, "SELECT * FROM users WHERE login='"..log.."' AND haslo='"..md5pass.."'")
if zap then
if dbPoll (zap, 1) then
local git = {success = true}
triggerClientEvent ("ZalogowanoPoprawnie", root, git)
else
git2 = {success=true, komunikat="Podano niepoprawne dane!. Sprobuj jeszcze Raz"}
triggerClientEvent ("BladLog", root, git2)
end
end
end
end
)
Ja osobi?cie u?ywam dbConnect, jednak zamiast dbQuery polecam zrobienie Sobie to w mojej postaci :
function pobierzRekord(...)
local query=dbQuery(polaczenie, ...)
if not query then
return nil
end
local res=dbPoll(query, -1)
if not res then return end
return res[1]
end
if dbPoll (zap, 1) then
local git = {success = true}
triggerClientEvent ("ZalogowanoPoprawnie", root, git)
else
git2 = {success=true, komunikat="Podano niepoprawne dane!. Sprobuj jeszcze Raz"}
triggerClientEvent ("BladLog", root, git2)
end
end
end
end
)
od tad juz nie dzia?a rejestracja
[ Dodano: 2014-06-17, 15:34 ]
if dbPoll(zap2, 0) then----- ta linijka wszystko psuje ;( w 1 i 2 kodzie
if (string.len(haslo) >= 5 and string.len(login) >= 3) then
local zap1 = dbQuery(baza, "INSERT INTO users (login, haslo) VALUES ('"..login.."','"..md5pass.."')")
local git = { success=true }
triggerClientEvent ("Zaliczamy", root, git)
else
local haslo = { success=true, komunikat="Haslo min. /6/ znakow, login: min. /3/ znaki!"}
triggerClientEvent("onPassNO", getRootElement(), haslo)
end
else
local ist = { success=true, komunikat="Podane konto istnieje juz w bazie danych!" }
triggerClientEvent("onAccountYES", getRootElement(), ist)
Wi?c teraz pr?bowa?em co? sam napisac z Wiki i czy to jest dobrze:
addEvent("Rejestracja",true)
addEventHandler("Rejestracja", root,
function (login, haslo, log)
if login and haslo then
konto = dbQuery (baza, "SELECT * FROM users WHERE login=""..login..""")
local oficlaj = dbPoll (konto, 0)
if string.len(login) >= 3 and string.len(haslo) >= 6 then
local dodajkonto = dbQuery (baz, "INSERT INTO users VALUES (login, haslo)", "login", "haslo")
exports.informacje:pokazInfo ("info", "Twoje konto zostalo stworzone")
else
exports.informacje:pokazInfo ("info", "Podales za krotkie Haslo lub Login")
end
else
exports.informacje:pokazInfo ("info", "Takie Konto juz istnienie")
end
end
)
[ Dodano: 2014-06-17, 21:43 ]
wiem, ?e to teoretycznie dzia?a i chcia?bym si? zapyta? czy tak powinno by?, ?e w tabeli login mam haslo a w tabeli haslo jakies cyferki
[ Dodano: 2014-06-17, 21:57 ]
i co chwile mam b??d z t? linijk? przed chwil? tworzy?o konta a teraz ta linjka nawali?a a nic nie zmienia?em:
konto = dbQuery (baza, "SELECT * FROM users WHERE login=""..login..""")
[ Dodano: 2014-06-17, 21:57 ]
i co chwile mam b??d z t? linijk? przed chwil? tworzy?o konta a teraz ta linjka nawali?a a nic nie zmienia?em:
konto = dbQuery (baza, "SELECT * FROM users WHERE login=""..login..""")
Za du?o cudzys?ow?w tam masz.
Poza tym, nie powiniene? wstawia? w ten spos?b zmiennych do zapytania, gdy? umo?lwia to atak sql injection na Twoj? baz?. Prawid?owy spos?b to:
dbQuery (baza, "SELECT * FROM users WHERE login=?", login)
Dzi?ki Wielebny to mi pomog?o po uzupe?nieniu edit box tworzy konto lecz w bazie dodaje kolumny ale nie pokazuje hasla ani loginu
[ Dodano: 2014-06-18, 10:39 ]
addEvent ("Logowanie", true)
addEventHandler ("Logowanie", root,
function (login, haslo)
if login and haslo then
konto = dbQuery (baza, "SELECT * FROM users WHERE login=? and haslo=?", login and haslo)
if konto then
if string.len(login) >= 5 then
kontko = dbPoll (konto, 1)
triggerClientEvent ("TAK", root, localPlayer)
else
exports.informacje:pokazInfo ("info", "Bledny login lub haslo")
end
end
end
end
)
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach