Huhu,
ich muss das Passwort aus der Datenbank mit dem eingegebenen Passwort im Login Dialog vergleichen.
Aber wie muss ich das machen?
Ich hab bei der Regestrierung es Hashn lassen mit SHA256_PassHash
Wäre echt nett wenn mir jemand helfen kann
Huhu,
ich muss das Passwort aus der Datenbank mit dem eingegebenen Passwort im Login Dialog vergleichen.
Aber wie muss ich das machen?
Ich hab bei der Regestrierung es Hashn lassen mit SHA256_PassHash
Wäre echt nett wenn mir jemand helfen kann
Direkt mit SQL
Wenn die Abfrage ein Resultat zurück gibt ist das Passwort richtig. ACHTUNG: Das eingegeben Passwort auch vorher Hashen.
Oder du liest das Passwort aus der Datenbank aus und vergleichst es mit PAWN.
strcmp(gehashtedPasswort, PasswortHashAusDatenbank, false) == 0) {
//Pass Korrekt
} else {
//pass nicht Korrekt
}
Natürlich immer mit dem gleichen SALT sonst wird es nicht klappen.
Jetzt bekomm ich diese Fehler:
Fehler:
C:\Users\Marcel\Desktop\City-of-Roleplay\Server\gamemodes\CoR.pwn(301) : warning 215: expression has no effect
C:\Users\Marcel\Desktop\City-of-Roleplay\Server\gamemodes\CoR.pwn(301) : error 001: expected token: ";", but found ")"
C:\Users\Marcel\Desktop\City-of-Roleplay\Server\gamemodes\CoR.pwn(301) : error 029: invalid expression, assumed zero
C:\Users\Marcel\Desktop\City-of-Roleplay\Server\gamemodes\CoR.pwn(305) : error 029: invalid expression, assumed zero
C:\Users\Marcel\Desktop\City-of-Roleplay\Server\gamemodes\CoR.pwn(306) : error 017: undefined symbol "endClientMessage"
C:\Users\Marcel\Desktop\City-of-Roleplay\Server\gamemodes\CoR.pwn(306) : warning 215: expression has no effect
C:\Users\Marcel\Desktop\City-of-Roleplay\Server\gamemodes\CoR.pwn(306) : error 001: expected token: ";", but found "-string-"
C:\Users\Marcel\Desktop\City-of-Roleplay\Server\gamemodes\CoR.pwn(306) : warning 215: expression has no effect
C:\Users\Marcel\Desktop\City-of-Roleplay\Server\gamemodes\CoR.pwn(306) : error 001: expected token: ";", but found ")"
C:\Users\Marcel\Desktop\City-of-Roleplay\Server\gamemodes\CoR.pwn(306) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
7 Errors.
Alles anzeigen
Script:
case DIALOG_LOGIN:
{
if(response)
{
new key[50], hash[65], query[256];
format(key, 50, "%s", inputtext);
mysql_escape_string(Spielername(playerid), Spielername(playerid)), mysql_escape_string(key, key);
format(query, sizeof(query), "SELECT * FROM "SQL_TAG"accounts WHERE Spielername='%s' AND Passwort='%s'", Spielername(playerid), key);
SHA256_PassHash(key, HASHCODE, hash, sizeof(hash));
mysql_tquery(Handle, query);
strcmp(hash, key, false) == 0) {
pInfo[playerid][LoggedIn] = true;
SpawnPlayer(playerid);
} else {
endClientMessage(playerid, SERVERCOLOR, "[Server] "COLOR_ROT"* Das eingegebene Passwort ist inkorrekt!");
new str[2048], ip[16];
format(str, sizeof(str), ""HTML_WEIS"Hallo"SERVERCOLORHTML" %s"HTML_WEIS", \nBitte geb dein Passwort ein. \n \nDeine Ip: "SERVERCOLORHTML"%s"), Spielername(playerid), GetPlayerIp(playerid, ip, sizeof(ip));
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, ""SERVERCOLORHTML"["SERVERTAG"] - Login", str, "Login", "Abbrechen");
}
return 1;
}
else
{
Kick(playerid);
}
}
Alles anzeigen
Okay ich kapier's net wie ich es umschreiben muss
Zeig mal wie du das Passwort speicherst beim Registrieren und dann wie du es Ladest und vergleichst
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case DIALOG_REGISTER:
{
if(response)
{
new str[2048], hash[65], query[256], key[50];
format(str, sizeof(str), "Willkommen "SERVERCOLORHTML"%s"HTML_WEIS", \nUm auf dem Server spielen zu können, musst du \ndir erst ein "SERVERCOLORHTML"Account"HTML_WEIS" erstellen. \n\n"HTML_ROT"* Mit der Regestration akzeptierst du die Serverregeln!", Spielername(playerid));
if(strlen(inputtext) < 4) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""SERVERCOLORHTML"["SERVERTAG"] - Regestration [1/4]", str, "Weiter", "Abbrechen"), SendClientMessage(playerid, SERVERCOLOR, "[Server]"HTML_ROT"* Dein Passwort ist zu kurz!");
format(key, 50, "%s", inputtext);
mysql_escape_string(Spielername(playerid), Spielername(playerid)), mysql_escape_string(key, key);
SHA256_PassHash(key, HASHCODE, hash, 65);
format(query, sizeof(query), "INSERT INTO "SQL_TAG"accounts (Spielername, Passwort) VALUES ('%s','%s')", Spielername(playerid), hash);
mysql_tquery(Handle, query);
printf(hash);
return 1;
}
else
{
SendClientMessage(playerid, SERVERCOLOR, "[Server] "HTML_ROT"Du wurdest gekickt! Grund: Fehlerhafte Regestration");
Kick(playerid);
return 1;
}
}
case DIALOG_LOGIN:
{
if(response)
{
new key[50], hash[65], query[256];
format(key, 50, "%s", inputtext);
mysql_escape_string(Spielername(playerid), Spielername(playerid)), mysql_escape_string(key, key);
format(query, sizeof(query), "SELECT * FROM "SQL_TAG"accounts WHERE Spielername='%s' AND Passwort='%s'", Spielername(playerid), key);
SHA256_PassHash(key, HASHCODE, hash, sizeof(hash));
mysql_tquery(Handle, query);
strcmp(hash, key, false) == 0)
{
pInfo[playerid][LoggedIn] = true;
SpawnPlayer(playerid);
}
else
{
SendClientMessage(playerid, SERVERCOLOR, "[Server]"COLOR_ROT"* Das eingegebene Passwort ist inkorrekt!");
new str[2048], ip[16];
format(str, sizeof(str), ""HTML_WEIS"Hallo"SERVERCOLORHTML" %s"HTML_WEIS", \nBitte geb dein Passwort ein. \n \nDeine Ip: "SERVERCOLORHTML"%s"), Spielername(playerid), GetPlayerIp(playerid, ip, sizeof(ip));
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, ""SERVERCOLORHTML"["SERVERTAG"] - Login", str, "Login", "Abbrechen");
}
return 1;
}
else
{
Kick(playerid);
}
}
}
return 1;
}
Alles anzeigen
format(query, sizeof(query), "SELECT * FROM "SQL_TAG"accounts WHERE Spielername='%s' AND Passwort='%s'", Spielername(playerid), key);
SHA256_PassHash(key, HASHCODE, hash, sizeof(hash));
mysql_tquery(Handle, query);
strcmp(hash, key, false) == 0) {
pInfo[playerid][LoggedIn] = true;
SpawnPlayer(playerid);
}
zu
format(query, sizeof(query), "SELECT * FROM "SQL_TAG"accounts WHERE Spielername='%s' AND Passwort='%s'", Spielername(playerid), key);
SHA256_PassHash(key, HASHCODE, hash, sizeof(hash));
mysql_tquery(Handle, query);
if(strcmp(hash, key, false) == 0) {
pInfo[playerid][LoggedIn] = true;
SpawnPlayer(playerid);
}