Da drehst du das um. Du lädst zuerst aus der MySQL Datenbank und prüfst das dann gegen.
So zum Beispiel:
C
case DIALOG_LOGIN:
{
new query[256];
mysql_format(handle, query, sizeof(query), "SELECT * FROM `accounts` WHERE `Name` = '%e' LIMIT 1", AccountInfo[playerid][account_Name]);
mysql_pquery(handle, query, "AccountLogin", "ds", playerid,inputtext);
}
case DIALOG_PW_CHECK:
{
if(!response) return Kick(playerid);
if(!inputtext[0]) return SPD(playerid,DIALOG_PW_CHECK,DIALOG_STYLE_INPUT,"Falsches Passwort","Dein eingegebenes Passwort ist falsch!","Bestätigen","Abbrechen");
bcrypt_check(inputtext, AccountInfo[playerid][account_Password], "OnPasswordChecked", "d", playerid);
}
//Bei AccountLogin
public AccountLogin(playerid,inputtext[])
{
//Halt account laden und AccountInfo[playerid][account_Password] den hash eben setzen
//Ganz unten dann:
bcrypt_check(inputtext, AccountInfo[playerid][account_Password], "OnPasswordChecked", "d", playerid);
return 1;
}
public OnPasswordChecked(playerid)
{
new bool:match = bcrypt_is_equal();
if(!match) return SPD(playerid,DIALOG_PW_CHECK,DIALOG_STYLE_INPUT,"Falsches Passwort","Dein eingegebenes Passwort ist falsch!","Bestätigen","Abbrechen");
//Hier kannst den Spieler dann spawnen und einloggen :)
return 1;
}
Alles anzeigen
