Dann meint er wohl die Versionen ab R33, da viele noch die R5 Version nutzen, welche veraltet ist. Die R39-3 ist bis heute die neuste offizielle Version.
[jTuT] MySQL R41-4 (Installation, XAMPP, Verwendung, Bedienung & Registrations-System)
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
-
-
Ich hab das Problem, dass wenn ich mich einloggen möchte das Passwort nicht verschlüsselt wird. (Passwort wird in Klartext angezeigt)
Print:
Das ist der Quellcode:
Codenew passwort[50]; format(passwort, 50, "%s", inputtext); mysql_escape_string(passwort, passwort); mysql_format(Handle, SQL, sizeof(SQL), "SELECT * FROM accounts WHERE Name = '%e' AND Passwort = MD5(MD5('%s'))", SpielerInfo[playerid][pName], passwort); printf("%s", SQL);
Auch wenn ich alles bis Zeile 4 weglasse, dann passiert das selbe.
-
Ist die doppelte MD5 Nutzung bewusst so gemacht?
Wenn ja, im print zeigt es dir das Passwort zwischen den beiden MD5's im Klartext an, da die Umwandlung nicht im mysql_format geschieht, sondern in nachfolgenden Prozessen, die deine "SQL" Variable nicht mehr betreffen. -
Ja ist bewusst, hmm aber mir wird trotz richtiger Passworteingabe immer gesagt das das Passwort falsch sei, obwohl es nicht so ist.
-
Was steht in der Spalte "Passwort" in der Datenbank bei dem Spieler?
Nutzt du MD5 auch doppelt bei der Registration? -
Ja, und das Passwort ist auch Doppelt verschlüsselt in der Datenbank.
-
Der Download-Button funktioniert anscheinend nicht mehr.
-
Kannst du den String des MD5 Wertes aus der Datenbank bitte mal posten? Gebe als Passwort bei der Registrierung Test oder Passwort ein.
Der Download-Button funktioniert anscheinend nicht mehr.
Du kannst die Daten aus dem Anhang herunterladen. Der Button verweist nur dahin, ist aber durch die Umstellung der Domain nicht mehr aktuell. Ich werde das am Wochenende in allen meinen Threads anpassen.
-
Also ich hab als Klartext "passwort" eingegeben. In der DB wurde das gespeichert: d6707bc3217f7ad5277cc0b8f0adbcb5
nun hab ich mal auf einer MD5 seite passwort 2x verschlüsselt und genau das selbe herausbekomme, also liegt das am LoginDas ist der Code der bei OnDialog... aufgerufen wird:
Code
Alles anzeigenif(!response) return Kick(playerid); new passwort[50]; format(passwort, 50, "%s", inputtext); mysql_escape_string(passwort, passwort); mysql_format(Handle, SQL, sizeof(SQL), "SELECT * FROM accounts WHERE Name = '%e' AND Passwort = MD5(MD5('%s'))", SpielerInfo[playerid][pName], passwort); printf("%s", SQL); LoginCheckedUser(playerid); forward LoginCheckedUser(playerid); public LoginCheckedUser(playerid) { if(cache_get_row_count() == 0) { ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Einloggen", "Das Angegebene Passwort war Falsch\nBitte gebe dein Passwort ein\n"COLOR_RED_HTML"Beachte: "COLOR_ORANGE_HTML"Wir werden nie nach Ihren Passwort fragen.", "Einloggen", "Verlassen"); } else { //Acc wird geladen. } }
-
-
Oh, stimmt funktioniert jetzt alles
-
Mit welchen Befehl löscht man etwas aus der Datenbank bzw. einen ganze Zeile?
Mit -> cache_delete()?
Wenn ja, bitte mit Beispiel.
-
-
Man muss sagen das es eines der ersten Tutorials ist die man auf SA-MP.de sieht das großzügig beschrieben ist.
Ich persönlich habe es zwar nicht benötigt, fand aber mal die Materie interessant und wie du die Tutorials schreibst.Weiter mit der guten Arbeit, mir würden die ganzen Leute im Forum schon den Kopf zerbrechen, aber du bleibst dran!
-
Jeffrey ist einer der wenigen der wirklich mal Ahnung hat, von dem was er erzählt. Ich respektiere Ihn dafür, dass er soviel Geduld mit sich bringt und so vielen Leuten hilft.
Ist auch einer der wenigen Tutorials die sich mit dem komplexen Thema MySQL befassen.
-
Wow, dieses Tutorial ist einfach klasse.
Einfach toll, dass du dir so viel Mühe gibst.
-
Hallo Leute,
trotz das Jeffry auf Reisen ist. Kann mir jemand eventuell helfen?
Bei mir speichert es absolut keine Daten.
Ich vermute jedoch das es an SaveUserStats liegt.
Kann mir hier jemand helfen?
stock SaveUserStats(playerid)
{
if(!PlayerInfo[playerid][pLoggedIn]) return 1;
new query[256];
mysql_format(handle, query, sizeof(query), "UPDATE users SET level = '%d', language = '%i',money = '%i', kills = '%i', deaths = '%i' WHERE id = '%d'",
PlayerInfo[playerid][pLevel],PlayerInfo[playerid][planguage],GetPlayerMoney(playerid), PlayerInfo[playerid][pKills], PlayerInfo[playerid][pDeaths], PlayerInfo[playerid][p_id]);
return 1;
} -
Du musst nach mysql_format auch mysql_tquery oder mysql_pquery verwenden. Schau dir das tutorial nochmal an.
-
Hi, danke für die schnelle Rückantwort.
Also ja, das hat gefehlt, leider ohne Erfolg.Habe mal die Log eingeschaltet:
[11:34:18] [DEBUG] CMySQLConnection::Connect - establishing connection to database...
[11:34:18] [DEBUG] CMySQLConnection::Connect - establishing connection to database...
[11:34:18] [DEBUG] CMySQLConnection::Connect - connection was successful
[11:34:18] [DEBUG] CMySQLConnection::Connect - connection was successful
[11:34:18] [DEBUG] CMySQLConnection::Connect - auto-reconnect has been enabled
[11:34:18] [DEBUG] CMySQLConnection::Connect - auto-reconnect has been enabled
[11:34:18] [DEBUG] CMySQLConnection::Connect - auto-reconnect has been enabled
[11:34:37] [DEBUG] mysql_format - connection: 1, len: 128, format: "SELECT id FROM users WHERE name = '%e'"
[11:34:37] [DEBUG] mysql_pquery - connection: 1, query: "SELECT id FROM users WHERE name = 'pinguin'", callback: "OnUserCheck", format: "d"
[11:34:37] [DEBUG] CMySQLQuery::Execute[OnUserCheck] - starting query execution
[11:34:37] [DEBUG] CMySQLQuery::Execute[OnUserCheck] - query was successfully executed within 0.393 milliseconds
[11:34:37] [DEBUG] CMySQLResult::CMySQLResult() - constructor called
[11:34:37] [DEBUG] Calling callback "OnUserCheck"..
[11:34:37] [DEBUG] cache_get_row_count - connection: 1
[11:34:37] [DEBUG] CMySQLResult::~CMySQLResult() - deconstructor called
[11:34:41] [DEBUG] mysql_format - connection: 1, len: 256, format: "INSERT INTO users (name, password) VALUES ('%e', MD5('%e'))"
[11:34:41] [DEBUG] mysql_pquery - connection: 1, query: "INSERT INTO users (name, password) VALUES ('pinguin', MD5('lol')", callback: "OnUserRegister", format: "d"
[11:34:41] [DEBUG] CMySQLQuery::Execute[OnUserRegister] - starting query execution
[11:34:41] [DEBUG] CMySQLQuery::Execute[OnUserRegister] - query was successfully executed within 36.794 milliseconds
[11:34:41] [DEBUG] CMySQLResult::CMySQLResult() - constructor called
[11:34:41] [DEBUG] Calling callback "OnUserRegister"..
[11:34:41] [DEBUG] cache_insert_id - connection: 1
[11:34:41] [DEBUG] CMySQLResult::~CMySQLResult() - deconstructor called//edit:
Habe den Fehler nun gefunden. Ich glaube im Tutorial selbst wurde dies auch nicht gemacht.
Der Spieler wird nach dem Registrieren nicht eingeloggt. Somit wird er erst garnicht beim Verlassen gespeichert. Trotzdem danke für die Hilfe -
Was man vielleicht noch sagen sollte ist, dass die Verschlüsselung hier von md5 nichts bringt, da kein Salt verwendet wird.
Durch Rainbowtables kann man hier ganz einfach das Passwort filten, welches verwendet wurde und dann sieht man das:
098f6bcd4621d373cade4e832627b4f6 = test
ist
Also für alle die hashen wollen und nicht wollen, dass man direkt das Passwort hat, mal nach "Salt" googeln und halt einfach das Passwort mit Salt hashen lassen
mfg.