Wie heißt denn eigentlich die Spalte in der Tabelle?
password oder passwort? Ich habe hier jetzt nämlich beide Varianten gesehen, wenn das nicht passt, dann würde es natürlich alle Fehler erklären. Prüfe das mal.
MySQL Accountsystem - Probleme
- Pride
- Geschlossen
- Erledigt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Beitrag von Pride ()
Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar. -
rüfe das mal.
Nun nachdem ich das mit passwort und password nach kontrolliert
hatte hab ich nochmal das MD5_Hash rausgenommen
und ohne hashen geht es wunderbar. -
http://www11.pic-upload.de/30.04.15/6zx9tboiir7r.png
Das ist das Bild welches du zuvor gepostet hast. Die Idee, mal die Feldlänge von "passwort" in der Tabelle zu prüfen kam mir beim Essen. Jetzt ist mir klar warum bei dir nichts geklappt hat, da muss man aber auch erst mal drauf kommen.
Dein "passwort" Feld in der Datenbank ist zu klein. Du hast da nur 25 Zeichen drin, ein MD5 ist aber 32 Zeichen lang. Deshalb geht das nicht.Wenn du das hochsetzt, dann müsste es auch ganz normal mit dem MD5('%e') im Query klappen.
Das erklärt auch, warum es ohne den Hash ging, weil dein Passwort weniger als 25 Zeichen hat. -
Wenn du das hochsetzt, dann müsste es auch ganz normal mit dem MD5('%e') im Query klappen.
Das erklärt auch, warum es ohne den Hash ging, weil dein Passwort weniger als 25 Zeichen hat.
Danke danke danke, es funktioniert jetzt muss ich nur alles das Speichern hinbekommen wenn ich mich nämlich registriere und dann disc. steht in der Datenbank nur mein Passwort und Geschlecht auf 0 gesetzt alles andere steht auf 'NULL' hier mal ein Screen das blau durchgestrichene ist nicht wichtig.
if(dialogid == DIALOG_CHAR3)
{
if(response)
{
if(strval(inputtext) > 0)
{
ShowPlayerDialog(playerid,DIALOG_CHAR4,DIALOG_STYLE_INPUT,"Charaktererstellung [4/5]","Wie ist dein Name? (Beispiel: Max Musermann)","Weiter","Abbrechen");
pInfo[playerid][pAlter]=strval(inputtext);
}
}
else
{
Kick(playerid);
}
}
if(dialogid == DIALOG_CHAR4)
{
if(response)
{
if(strlen(inputtext)>=50)
{
ShowPlayerDialog(playerid,DIALOG_CHAR4,DIALOG_STYLE_INPUT,"Charaktererstellung [4/5]","Findest du nicht auch dein Name ist ein wenig lang?!\nNimm einen anderen Namen!","Weiter","Abbruch");
}
if(strlen(inputtext)<=3)
{
ShowPlayerDialog(playerid,DIALOG_CHAR4,DIALOG_STYLE_INPUT,"Charaktererstellung [4/5]","Findest du nicht auch dein Name ist ein wenig kurz?!\nNimm einen anderen Namen!","Weiter","Abbruch");
}
else
{
format(pInfo[playerid][pName],MAX_PLAYER_NAME,"%s",inputtext);
new string[128];
format(string,sizeof(string),"%s",pInfo[playerid][pName]);
new Text3D:label = Create3DTextLabel(string, weiss, 30.0, 40.0, 50.0, 40.0, 0);
Attach3DTextLabelToPlayer(label, playerid, 0.0, 0.0, 0.7);
SpielerSpeichern(playerid);
SpawnPlayer(playerid);
}
}
else
{
Kick(playerid);
}
}Dort werden Alter und Name gesetzt..
/* Account Speichern und Laden */
stock LoadAccount(playerid)
{
pInfo[playerid][pEingeloggt] = 1;
SendClientMessage(playerid,gruen,"Account läd...");
pInfo[playerid][pGeld] = cache_get_field_content_int(0, "Geld", Handle);
pInfo[playerid][pLevel] = cache_get_field_content_int(0, "Level", Handle);
pInfo[playerid][pAdmin] = cache_get_field_content_int(0, "Adminlevel", Handle);
pInfo[playerid][pNeuling] = cache_get_field_content_int(0, "Neuling", Handle);
pInfo[playerid][pGeschlecht] = cache_get_field_content_int(0, "Geschlecht", Handle);
pInfo[playerid][pAlter] = cache_get_field_content_int(0, "Alter", Handle);
GivePlayerMoney(playerid,pInfo[playerid][pGeld]);
SetPlayerScore(playerid,pInfo[playerid][pLevel]);
new tmp_name[MAX_PLAYER_NAME];
cache_get_field_content(0,"Name",tmp_name,Handle);
strmid(pInfo[playerid][pName],tmp_name,0,sizeof(tmp_name),sizeof(tmp_name));
new string[128];
format(string,sizeof(string),"%s",pInfo[playerid][pName]);
new Text3D:label = Create3DTextLabel(string, weiss, 30.0, 40.0, 50.0, 40.0, 0);
Attach3DTextLabelToPlayer(label, playerid, 0.0, 0.0, 0.7);
/*
Info:
cache_get_field_content_int für eine Zahl
cache_get_field_content für einen String
cache_get_field_content_float für eine Kommerzahl
*/
return 1;
}
stock SpielerSpeichern(playerid)
{
if(!pInfo[playerid][pEingeloggt])return 1;
new query[128];
mysql_format(Handle, query, sizeof query, "UPDATE `user` SET `Geld`='%i',`Level`='%i',`Adminlevel`='%i',`Neuling`='%i',`Alter`='%i',`Name`='%s' WHERE `username`='%e'",GetPlayerMoney(playerid),GetPlayerScore(playerid),pInfo[playerid][pAdmin],pInfo[playerid][pNeuling],pInfo[playerid][pAlter],pInfo[playerid][pName],Spielername(playerid)),
mysql_pquery(Handle, query, "", "");
printf("%s",query);
return 1;
} -
Ah, super. Das war diese Kleinigkeit von der ich sprach, die man ewig suchen kann.
Das NULL heißt einfach nur, dass noch kein Wert gesetzt wurde.
Und das ist, weil dein Query in SpielerSpeichern zu kurz ist.
new query[128];
zu:
new query[256]; -
Immer noch nichts gespeichert überall 'NULL' und bei Geschlecht 0
-
Rufst du SpielerSpeichern(playerid) überhaupt auf? Also siehst du den print im Server Log?
Wenn nicht, dann solltest du das natürlich machen.
Wenn du den print siehst, poste den mal und poste den MySQL Log dazu. -
stock SpielerSpeichern(playerid)
{
if(!pInfo[playerid][pEingeloggt])return 1;
new query[456];
mysql_format(Handle, query, sizeof query, "UPDATE `user` SET `Geld`='%i',`Level`='%i',`Adminlevel`='%i',`Neuling`='%i',`Alter`='%i',`Name`='%s' WHERE `username`='%e'",GetPlayerMoney(playerid),GetPlayerScore(playerid),pInfo[playerid][pAdmin],pInfo[playerid][pNeuling],pInfo[playerid][pAlter],pInfo[playerid][pName],Spielername(playerid)),
mysql_pquery(Handle, query, "", "");
printf("%s",query);
return 1;
}Hatte ich zu:
stock SpielerSpeichern(playerid)
{
if(pInfo[playerid][pEingeloggt])return 1;
new query[456];
mysql_format(Handle, query, sizeof query, "UPDATE `user` SET `Geld`='%i',`Level`='%i',`Adminlevel`='%i',`Neuling`='%i',`Alter`='%i',`Name`='%s' WHERE `username`='%e'",GetPlayerMoney(playerid),GetPlayerScore(playerid),pInfo[playerid][pAdmin],pInfo[playerid][pNeuling],pInfo[playerid][pAlter],pInfo[playerid][pName],Spielername(playerid)),
mysql_pquery(Handle, query, "", "");
printf("%s",query);
return 1;
}geändert also das if(pInfo[playerid][pEingeloggt])return 1; und nicht if(!pInfo[playerid][pEingeloggt])return 1;
ist das logisch? oder hab ich da jetzt noch mehr falsch gemacht -
if(pInfo[playerid][pEingeloggt])return 1;
muss so sein:
if(!pInfo[playerid][pEingeloggt])return 1;Heißt ja:
Wenn nicht eingeloggt, speichere nichts. -
-
Nach unzähligen Versuchen funktioniert es nun ich kann mich registrieren es speichert das Startgeld und Startlevel und läd es auch beim nächsten einloggen.
DANKE Jeffry -
breadfish.de
Hat das Thema geschlossen.