Ja, das wurde bereits mal erwähnt.
Das Tutorial ist bald ein Jahr alt, deswegen ist es auch nicht mehr aktuell.
Werde die wochen mal ein aktuelleres Tutorial schreiben, aber danke für den Hinweis.
mfg
Ja, das wurde bereits mal erwähnt.
Das Tutorial ist bald ein Jahr alt, deswegen ist es auch nicht mehr aktuell.
Werde die wochen mal ein aktuelleres Tutorial schreiben, aber danke für den Hinweis.
mfg
Das Tutorial ist schon sehr alt. (Bald ein Jahr)
Ich würde es zum aktuellem Zeitpunkt so schreiben:
stock SpielerSpeichern(playerid)
{
if(!SpielerInfo[playerid][pEingeloggt])return 1;
new query[128];
mysql_format(Handle, query, sizeof query, "UPDATE `users` SET `Geld`='%i',`Level`='%i' WHERE `username`='%e'", GetPlayerMoney(playerid), GetPlayerScore(playerid), Spielername(playerid)),
mysql_pquery(Handle, query, "", "");
return 1;
}
mfg
Wie kann ich das Passwort für ein CP Login entschlüsseln/bzw. vergleichen?
$Username = mysql_real_escape_string($_POST['username']);
$Password = mysql_real_escape_string($_POST['password']);
$query = (mysql_query("SELECT SQLid FROM users WHERE Name = '$Username' AND `Key` = MD5('$Passwort')") or die(mysql_error()));
Sollte doch eig so funktionieren oder?
Edit: Code abgeändert
@crontec:
Wir sind hier zwar nicht in einem PHP Bereich, trotzdem werde ich dir helfen.
$Username = mysql_real_escape_string($_POST['username']);
$Password = mysql_real_escape_string($_POST['password']);
$query = "SELECT * FROM `users´ WHERE `Name` = '$Username' AND `Key` = MD5('$Passwort')";
$result = mysql_query($query);
$pwright = mysql_num_rows($result);
if($pwright) // kennwort richtig!
else if(!$pwright) // kennwort inkorrekt!
Probiere das mal so in die richtung
if(!strlen(inputtext) < 4)return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Anmeldung", "Es wurde kein Account unter diesem namen gefunden!", "Anmelden", "Abbrechen"); format(key, 50, "%s", inputtext);
Zitatwarning 213: tag mismatch
Kann mir jemand Helfen?
Aus diesem Grund kann ich mich nicht einloggen bzw. Regestrieren. Wenn ich auf dem Server komme passiert nichts. Ich habe mal UserCheck(playerid); unter OnPlayerCommand eingebaut dann erscheint zwar der Dialog, doch wenn ich auf
Regestrieren klicke, erscheint der Dialog einfach noch mal. Ist halt eine Endlos schleife. Also wo ist der Fehler?
Lg
schick mal etwas mehr Code, sonst können wir nicht Helfen
Hi,
danke die Warnung ist nun weg. Dennoch funktioniert das System nicht. ich habe alles so gemacht wie hier im Thereath beschrieben.
Zu aller erst ist einfach gar nichts passiert, dann habe ich unter OnPlayerConnect
UserCheck(playerid);
Geschrieben. Dann erschien ein Dialog von wegen Account regestrieren. Wenn ich dann aber reconnecte, passiert wieder nichts.
Hat jemand ne Ahnung woran das liegt?
OnPlayerConnect
public OnPlayerConnect(playerid)
{
new query[256];
mysql_escape_string(Spielername(playerid), Spielername(playerid));
format(query, sizeof(query), "SELECT * FROM user WHERE username='%s'", Spielername(playerid));
mysql_tquery(Handle, query, "UserCheck", "i", playerid);
UserCheck(playerid);
return 1;
}
UserCheck
forward UserCheck(playerid);
public UserCheck(playerid)
{
new num_rows, num_fields;
cache_get_data(num_rows, num_fields, Handle);
if(num_rows == 0)
{
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Anmeldung", "Es wurde kein Account unter diesem namen gefunden!", "Anmelden", "Abbrechen");
}
else
{
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Anmeldung", "Es wurde ein Account unter diesem namen gefunden!", "Anmelden", "Abbrechen");
}
}
OnDialogResponse
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new query[256], key[50];
if(dialogid == DIALOG_REGISTER)
{
if(!response)
{
return Kick(playerid);
}
if(strlen(inputtext) < 4)return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Anmeldung", "Es wurde kein Account unter diesem namen gefunden!", "Anmelden", "Abbrechen");
format(key, 50, "%s", inputtext);
mysql_escape_string(Spielername(playerid), Spielername(playerid)), mysql_escape_string(key, key);
format(query, sizeof(query), "INSERT INTO (username, passwort) VALUES ('%s',MD5('%s')", Spielername(playerid), key);
mysql_tquery(Handle, query);
SendClientMessage(playerid, -1, "Dein Account wurde erstellt.");
GivePlayerMoney(playerid, 50000), SetPlayerScore(playerid, 10);
}
if(dialogid == DIALOG_LOGIN)
{
if(!response)
{
return Kick(playerid);
}
format(key, 50, "%s", inputtext);
mysql_escape_string(Spielername(playerid), Spielername(playerid)), mysql_escape_string(key, key);
format(query, sizeof(query), "SELECT * FROM user WHERE username='%s' AND password='%s'", Spielername(playerid), key);
mysql_tquery(Handle, query, "OnPasswordResponse", "i", playerid);
}
return 1;
}
OnPlayerDisconnect
public OnPlayerDisconnect(playerid, reason)
{
SpielerSpeichern(playerid);
return 1;
}
SpielerSpeichern
stock SpielerSpeichern(playerid)
{
if(!SpielerInfo[playerid][pEingeloggt])return 1;
new query[128];
mysql_format(Handle, query, sizeof query, "UPDATE `users` SET `Geld`='%i',`Level`='%i',,`Score`='%i'`Auto`='%i' WHERE `username`='%e'", GetPlayerMoney(playerid), GetPlayerScore(playerid), Spielername(playerid)),
mysql_tquery(Handle, query);
return 1;
}
public OnPlayerConnect(playerid)
{
new query[256];
mysql_escape_string(Spielername(playerid), Spielername(playerid));
format(query, sizeof(query), "SELECT * FROM user WHERE username='%s'", Spielername(playerid));
mysql_tquery(Handle, query, "UserCheck", "i", playerid);
UserCheck(playerid);
return 1;
}
zu
public OnPlayerConnect(playerid)
{
new query[256];
mysql_escape_string(Spielername(playerid), Spielername(playerid));
format(query, sizeof(query), "SELECT * FROM user WHERE username='%s'", Spielername(playerid));
mysql_tquery(Handle, query, "UserCheck", "i", playerid);
return 1;
}
forward UserCheck(playerid);
public UserCheck(playerid)
{
new num_rows, num_fields;
cache_get_data(num_rows, num_fields, Handle);
if(num_rows == 0)
{
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Anmeldung", "Es wurde kein Account unter diesem namen gefunden!", "Anmelden", "Abbrechen");
}
else
{
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Anmeldung", "Es wurde ein Account unter diesem namen gefunden!", "Anmelden", "Abbrechen");
}
return 1; //Hier einfach ein return 1; ist immer gut
}
//EDIT:
Existiert die Tabelle "User"? Steht was in den MySQL Loggs?
ZitatAlles anzeigen[14:28:14] [DEBUG] mysql_escape_string - source: "[XHSD", connection: 1, max_len: 24
[14:28:14] [DEBUG] mysql_tquery - connection: 1, query: "SELECT * FROM user WHERE username='XHSD'", callback: "UserCheck", format: "i"
[14:28:14] [DEBUG] CMySQLQuery::Execute[UserCheck] - starting query execution
[14:28:14] [DEBUG] CMySQLQuery::Execute[UserCheck] - query was successfully executed within 30.293 milliseconds
[14:28:14] [DEBUG] CMySQLResult::CMySQLResult() - constructor called
[14:28:14] [DEBUG] Calling callback "UserCheck"..
[14:28:14] [DEBUG] cache_get_data - connection: 1
[14:28:14] [DEBUG] CMySQLResult::~CMySQLResult() - deconstructor called
[14:28:20] [DEBUG] mysql_escape_string - source: "XHSD", connection: 1, max_len: 24
[14:28:20] [DEBUG] mysql_escape_string - source: "test", connection: 1, max_len: 50
[14:28:20] [DEBUG] mysql_tquery - connection: 1, query: "INSERT INTO (username, passwort) VALUES ('XHSD',MD5('test", callback: "(null)", format: "(null)"
[14:28:20] [DEBUG] CMySQLQuery::Execute[] - starting query execution
[14:28:20] [ERROR] CMySQLQuery::Execute[] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(username, passwort) VALUES ('XHSD',MD5('test')' at line 1
@xMichael Kannst du mir vielleicht helfen?
Ich möchte darauf Hinweisen das dass Tutorial bald ein Jahr alt ist und nicht mehr unbedingt so aktuell ist.
mfg
Dann lösch' es oder aktualisier' es. Da sind einige Fehler vorhanden, welche von vielen nicht erkannt werden & übernommen werden.
Schön erklärt, step for step.
Für Neulinge und darüber hinaus sicherlich nicht unnötig
Ich mache es mal nach, und schaue wie es so funktioniert
Ich brauch ein Tutorial für MySQL R39-3 hat jemand eins für mich, das hier
funktioniert nicht mehr richtig, MrMonats MySQL Login ist denke mal
auch veraltet hat jemand ein aktuelles?
Du kannst dich schon an diesem Tutorial anlehnen da es nicht viel Veränderungen im Gegensatz zu MySQL-r38 gibt.
mfg
Mmhh.. Ich habe alles so gemacht wie hier im Tutorial (Ist noch ein Blank Script nur dein Account System drinnen) und wenn ich auf dem Server komme kann ich auf Spawn klicken und nichts passiert..
Ich meine damit schnellere und bessere Möglichkeiten es zu scripten.