Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2014-11-15, 01:10


Terr9909

Skrypter LUA






Wiek: 26
Na forum: 4234 dni
Posty: 346
Nick w MP: Split

Piwa: 1043

Respekt: 182,8
Respekt: 182,8Respekt: 182,8

Witam, mam pewien problem ot?? nie sprawdza czy m?j nick istnieje w bazie danych, a co najlepsze mam ju? w bazie danych mojego u?ytkownika i tworzy mi nowego tak jak by nie sprawdza?o...

addEvent("onRegisterRequest"true)
addEventHandler("onRegisterRequest"root, function(loginhaslo)
    if login and haslo then
        local uzytkownicy dbQuery(handler"SELECT * FROM go_uzytkownicy")
        local result dbPoll(uzytkownicy, -1)
        if not result then return end
        for i,v in ipairs(result) do
            if v.login ~= login then
                if not getElementData(source"gracz_nowy"then
                    setElementData(source"gracz_nowy"true)
                    local blad "Konto zosta?o za?o?one, mo?esz si? zalogowa?."
                    triggerClientEvent(source"onBlad"rootbladtrue)
                    dbExec(handler"INSERT INTO go_uzytkownicy SET id='', login='"..login.."', haslo='"..md5(haslo).."'")
                else
                    -- jezeli gracz chce dwa razy kliknac blokujemy mu :D
                end
            else
                local blad "Podane konto ju? istnieje w bazie danych."
                triggerClientEvent(source"onBlad"rootblad)
            end
        end
    end
end)


Postaw piwo autorowi tego posta
 

 
Wysłany: 2014-11-15, 06:50


Wielebny







Wiek: 41
Na forum: 5498 dni
Posty: 257
Nick w MP: Wielebny

Piwa: 1690

Respekt: 180
Respekt: 180Respekt: 180

S?uchaj, masz ju? t??baz? danych, uda?o Ci si??do niej podpi??, ale dalej korzystasz z niej jakby to by? plik tekstowy. W Twoim kodzie sprawdzenie czy login jest wolny polega na wczytaniu wszystkich rekord?w i por?wnywaniu ich - to strasznie nieoptymalne (pomijam teraz drobny b??d logiczny kt?ry tam si??znajduje).

Skoro ju? masz t??baz??danych to skorzystaj z jej dobrodziejstw. Nie musisz wczytywa? wszystkich rekord?w z tabeli aby j? sprawdzi?, mo?esz zrobi??to pobieraj?c tylko jeden:

Kod:


SELECT login FROM go_uzytkownicy WHERE login=?


Kolejne sprawy na kt?re musisz zwr?ci? uwag? to: escapowanie wk?adanych danych (zwr?? uwag? w przyk?adach na wiki do czego u?ywany jest znak ?) i indeksy w bazie danych (tabela go_uzytkownicy musi mie? indeks na polu login).

Postaw piwo autorowi tego posta
 

 
Wysłany: 2014-11-15, 14:40


Terr9909

Skrypter LUA






Wiek: 26
Na forum: 4234 dni
Posty: 346
Nick w MP: Split

Piwa: 1043

Respekt: 182,8
Respekt: 182,8Respekt: 182,8

ok dzi?ki dzia?a... :D

[ Dodano: 2014-11-15, 14:53 ]
raczej nie dzia?a, nadal rejestruje gracza..
addEvent("onLoginRequest"true)
addEventHandler("onLoginRequest"root, function(loginhaslo)
    if login and haslo then
        local uzytkownicy dbQuery(handler"SELECT * FROM go_uzytkownicy WHERE login=?"login)
        local result dbPoll(uzytkownicy, -1)
        if not result then return end
        for i,v in ipairs(result) do
            if v.login == login then
                if v.login == login and v.haslo == md5(haslothen
                    fadeCamera(sourcefalse)
                    setPlayerName(sourcelogin)
                    setElementData(source"gracz_id"v.id)
                    setElementData(source"gracz_zalogowany"true)
                    triggerClientEvent(source"onAuthResult"root)
                else
                    local blad "Podane dane s? nieprawid?owe."
                    triggerClientEvent(source"onBlad"rootblad)
                end
            else
                local blad "Nie znaleziono podanego loginu."
                triggerClientEvent(source"onBlad"rootblad)
            end
        end
    end
end)


Postaw piwo autorowi tego posta
 

 
Wysłany: 2014-11-18, 10:45


Blur







Wiek: 28
Na forum: 4298 dni
Posty: 47
Nick w MP: Blu

Piwa: 2

Respekt: 50

Prosz? ci? ?licznie, zamiast resulotwa?, u?yj row. B?dzie dzia?a?. Czyli:
local result,row dbPoll(uzytkownicy,-1)
if row == 0 then


Dzia?a ?

Postaw piwo autorowi tego posta
 

 
Tagi: nie :: sprawdza :: konta
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » LUA » Nie sprawdza konta Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi

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
Dodaj temat do Ulubionych
Wersja do druku