• 28 Mars 2024, 22:37:31


Auteur Sujet: [Probleme] Mon Login Panel  (Lu 3300 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Malak

  • *
  • Tueur
  • Messages: 68
    • Voir le profil
[Probleme] Mon Login Panel
« le: 19 Janvier 2013, 19:55:52 »
Bonsoir,

je suis en train de faire un panel de login pour mon serveur et j'ai une petite erreur dans une condition.
Voici le script :

Code: (lua) [Sélectionner]
function verifAccount(username,password)
handler = mysql_connect("localhost", "root", "", "osdbd") -- Establish the connection
if ( not handler ) then -- The connection failed
  outputDebugString("Unable to connect to the MySQL server")
else
  local result = mysql_query(handler, "SELECT Name, Motdepasse, Serial FROM osdserver")
if (not result) then
outputDebugString("Error executing the query: (" .. mysql_errno(handler) .. ") " .. mysql_error(handler))
else
local row = mysql_fetch_row(result)
outputChatBox("Name: "..row[1].."/"..username.." Pass: "..row[2].."/"..password,source,255,255,0)-- voici un exemple de ce que retourne le chat : Name: Nametest/Nametest Pass: passtest/passtest
local serial = getPlayerSerial(source)
if row[1] == username and row[2] == password then -- le problème est ici, il arrive pas a comparer les 2 variables et donc me renvoi l'erreur du else, pourat c'est deux variable sont identique
if not row[3] == "" and tostring(row[3]) == tostring(serial) then
mysql_free_result(result) -- Freeing the result is IMPORTANT
mysql_close(handler)
return true
else
triggerClientEvent(source,"set_warning_text",getRootElement(),"Login","Serial is invalid for your account.")
return false
end
else
triggerClientEvent(source,"set_warning_text",getRootElement(),"Login","Wrong username and/or password!")
return false
end
end
end
end

Si vous pourriez m'aider car la je suis bloquer avec cette stupide erreur.
(PS: mon code est bien identé juste la un problème en le mettant sur le forum)

Merci

Malak++

Hors ligne Citizen

  • Scripteur LUA confirmé
  • *
  • Messages: 235
    • Voir le profil
    • Byston Evolution
Re : [Probleme] Mon Login Panel
« Réponse #1 le: 19 Janvier 2013, 19:58:48 »
Bonsoir Malak,

Pendant que je regarde ton script, tu pourrais donner plus de détails sur le problème/erreur ?
Est-ce que t'as une erreur dans la console ? Au quel cas, pourrais tu nous la donner ?
Ou alors il n'y a pas d'erreur, mais tu n'arrives pas à te login ?

Merci d'avance,

Citizen
« Modifié: 19 Janvier 2013, 21:02:09 par Citizen »
The rEvolution is coming ...

Hors ligne Malak

  • *
  • Tueur
  • Messages: 68
    • Voir le profil
Re : [Probleme] Mon Login Panel
« Réponse #2 le: 19 Janvier 2013, 20:22:39 »
Aucune erreur est retourner le script "marche" mais cependant alors que username et password égale bien Name et Motdepasse de ma database. (vérifier avec le outputchatbox quand j'essaye)
Il n'arrive pas a comparer ces 2 variables de type texte et donc il dit wrong username or password message d'erreur qui est dans le else.


Hors ligne Citizen

  • Scripteur LUA confirmé
  • *
  • Messages: 235
    • Voir le profil
    • Byston Evolution
Re : [Probleme] Mon Login Panel
« Réponse #3 le: 19 Janvier 2013, 21:02:16 »
Ok alors essaye de faire un tostring() sur tes 2 variables à comparer:
Citation de: lua
if tostring(row[1]) == tostring(username) and tostring(row[2]) == tostring(password) then
comme tu as fait pour la comparaison du serial.

D'ailleur à ce propos, le serial est générer par rapport à l'hardware de l'ordinateur ce qui fait que le joueur est obligé de jouer avec le même pc qu'il a utiliser pour s'enregistrer. Moi qui est 2 pcs (un fixe et un portable), j'aimerais bien pouvoir y jouer sur mes 2 pcs.

Et ici:
Code: (lua) [Sélectionner]
mysql_free_result(result) -- Freeing the result is IMPORTANT
mysql_close(handler)

Il est vrai qu'il est important de libérer le résultat quand un résultat à été retourné MAIS
il faut faire attention de bien fermer ta connexion SQL après avoir finit de l'utilisé.
Là tu ne la fermes que lorsque qu'il a réussi à ce login alors qu'il faudrait la fermer dans tous les cas.

Moi personnellement j'ouvre une connexion lorsque le serveur se lance et je la ferme que lorsque le serveur s'arrête. Bien évidemment, je stock cette connexion dans une globale.
A toi de voir comment procéder.

Cordialement,

Citizen
The rEvolution is coming ...

Hors ligne Malak

  • *
  • Tueur
  • Messages: 68
    • Voir le profil
Re : [Probleme] Mon Login Panel
« Réponse #4 le: 19 Janvier 2013, 22:31:02 »
Merci pour tes conseil cepandant j'ai déjà essayer tostring et sa ne fonctionne pas

EDIT : J'ai même essayer avec mysql_escape_string dans les 2 sens (coté sql et coté panel) mais j'ai toujour ce même problème. Et pourtant on voit bien qu'avec le outputchatbox les identifiants sont bine les mêmes.   :wallbash:
« Modifié: 20 Janvier 2013, 09:24:38 par Malak »

Hors ligne Citizen

  • Scripteur LUA confirmé
  • *
  • Messages: 235
    • Voir le profil
    • Byston Evolution
Re : [Probleme] Mon Login Panel
« Réponse #5 le: 20 Janvier 2013, 15:30:52 »
Hummm c'est bizarre en effet.

Ah tu quand même réessayé avec cette condition ?
Code: (lua) [Sélectionner]
if tostring(row[1]) == tostring(username) and tostring(row[2]) == tostring(password) thentu avais dit que t'avais déjà essayé, mais si tu pouvais réessayer pour être sûr.

Ensuite met un outputChatBox à l'endroit ou le login à réussi (pour être sûr de voir le moment où tu auras réussi a te login)

Et rajoute un
Code: (lua) [Sélectionner]
outputChatBox("Name: "..string.len(tostring(row[1])).."/"..string.len(tostring(username)).." Pass: "..string.len(tostring(row[2])).."/"..string.len(tostring(password)),source,255,255,0)juste en-dessous de ton outputChatBox du début et réessaye.

Si le problème persiste, fait le moi savoir en rajoutant ton code actuel dans un spoiler car t'as du faire pas mal de test et modifier aussi pas mal de lignes dans ton code.

Cordialement,

Citizen
The rEvolution is coming ...

Hors ligne Malak

  • *
  • Tueur
  • Messages: 68
    • Voir le profil
Re : [Probleme] Mon Login Panel
« Réponse #6 le: 20 Janvier 2013, 15:50:55 »
J'ai résolut le problème en intégrant dans la requête la condition pour les mots de passe par contre j'ai toujour besoin d'utiliser une condition externe pour vérifier si le serial et le même car si il est pas le même il doit se mettre à jour dans la BD.
Actuellement il se met tout le temps à jours.

Code: (lua) [Sélectionner]
function verifAccount(username,password)
handler = mysql_connect("localhost", "root", "", "osdbd") -- Establish the connection
if ( not handler ) then -- The connection failed
  outputDebugString("Unable to connect to the MySQL server")
else
local usernames = mysql_escape_string(handler,username)
local passwords = mysql_escape_string(handler,password)
local result = mysql_query(handler, "SELECT Serial FROM osdserver WHERE Name='"..usernames.."' AND Motdepasse='"..passwords.."'")
if (not result) then
outputDebugString("Error executing the query: (" .. mysql_errno(handler) .. ") " .. mysql_error(handler))
triggerClientEvent(source,"set_warning_text",getRootElement(),"Login","Wrong username and/or password!")
return false
else
local row = mysql_fetch_assoc(result)
local serial = getPlayerSerial(source)
if tostring(row["Serial"]) == tostring(serial) then
mysql_free_result(result) -- Freeing the result is IMPORTANT
mysql_close(handler)
return true
else -- ce code ce lance a chaque login même si tostring(row["Serial"]) == tostring(serial)
local resultquery = mysql_query(handler, "INSERT INTO osdserver SET Serial='"..serial.."'")
outputChatBox("[INFO] "..usernames.." is login with the serial : "..serial,source,255,255,0)
mysql_close(handler)
return true
end
end-- Close the connection
end
end