MySQL R38 - Simples Anmeldung´s 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
  • Beitrag von LoomaR ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Beitrag von Grapefruit ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • 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 :thumbup:

  • Wie kann ich das Passwort für ein CP Login entschlüsseln/bzw. vergleichen?


    PHP
    $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.


    PHP
    $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);


    Zitat

    warning 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

    "when you got nothing to lose, then baby you got it all" - OPERATOR

  • 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;
    }

    "when you got nothing to lose, then baby you got it all" - OPERATOR

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • 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?

  • @PermanenT




    @xMichael Kannst du mir vielleicht helfen? :/

    "when you got nothing to lose, then baby you got it all" - OPERATOR

    Einmal editiert, zuletzt von XHSD ()

  • 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.

    - heftig abhängig von Karli Kugelblitz Choco Drinks

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen