MySQL Registersystem [BlueG R8+ (R26)]

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
  • @Andrzejxy':
    ich hab ne lösung gefunden, mach einfach nen update query, ich hab es nun so



    new query[128];
    User[playerid][pAdmin]=5;

    mysql_format(mycon,query, sizeof(query), "UPDATE `User` SET `pAdmin` = %d WHERE `Name` = '%e'",User[playerid][pAdmin],User[playerid][Username]);
    mysql_tquery(mycon,query,"","");

  • Sehr unsicher umgesetzt, folgendes Beispiel:

    • Ein Spieler will sich einloggen und die mysql_query wird abgesendet (Threaded: Also arbeitet das ganze im Hintergrund, während der SA-MP Server weiter arbeitet)
    • Der Spieler geht nun Offline (Beispiel: ID = 5)
    • Ein anderer Spieler kommt online ( ID = 5 )
    • mysql_query vom ERSTEN Punkt wird nun fertig gestellt und ruft das Callback in PAWN für ID = 5 auf (zur Verarbeitung des Ergebnisses)
    • KABOOM ID = 5 ist ein ganz anderer Spieler! Du hast keine Überprüfung dafür, ob es sich noch um den selben Spieler nach Fertigstellung der Abfrage handelt
    • Account wurde erfolgreich gehackt


    Kann schnell passieren, sobald der mysql Server mal etwas langsamer reagiert


    Wie würde so eine Überprüfungdenn aussehen?

    Glaub keinem, der Dir sagt, dass Du nichts verändern kannst.
    Die, die das behaupten, haben nur vor der Veränderung Angst.
    Es sind dieselben, die erklären, es sei gut so, wie es ist.
    Und wenn Du etwas ändern willst, dann bist Du automatisch Terrorist (Die Ärzte - Deine Schuld)

  • Sehr schönes Tutorial, hilft jedem echt gut weiter. Kann man die Tabelle auch vom Script aus erstellen lassen? falls ja, würdest du mir ein Beispiel machen?

    Die Kritik an anderen hat noch keinem die eigene Leistung erspart.

    – Noël Coward

  • Wie würde so eine Überprüfungdenn aussehen?


    So hab ichs:

    new pQuery[MAX_PLAYERS];


    public OnPlayerConnect(playerid)
    {
    pQuery[playerid]++;
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    pQuery[playerid]++;
    return 1;
    }



    //Dann bei Jedem Query:
    mysql_function_query(connection, "SELECT * FROM `accounts`", true, "OnPlayerDataLoad", "ii", playerid, pQuery[playerid]);


    //callback
    public OnPlayerDataLoad(playerid, secure)
    {
    if(!IsPlayerConnected(playerid) || playerid == INVALID_PLAYER_ID) return printf("[secure] Query fehler, Spieler ist nicht Online (OnPlayerDataLoad)");
    if(secure != pQuery[playerid]) return printf("[secure] Query Kollision, das Ergebins ist nicht für den Spieler [%d]%s bestimmt (OnPlayerDataLoad)", playerid, GetName(playerid));
    //...
    return 1;
    }


  • Funktioniert nicht bei mir, irgendwie buggt alles bei mir :/

  • Wenn ich auf den Server Connecten möchte, steht dort ((" Server didnt Respowned ")). Weiß jemand den Fehler?


    Achja und...

    Sehr schönes Tutorial, hilft jedem echt gut weiter. Kann man die Tabelle auch vom Script aus erstellen lassen? falls ja, würdest du mir ein Beispiel machen?

    Die Kritik an anderen hat noch keinem die eigene Leistung erspart.

    – Noël Coward

  • ich wollte grade mein Script testen. Soweit funktioniert auch alles.
    Nur er speichert keine User, das einzige was in den logs steht ist das:


    Zitat

    [18:05:45] [ERROR] ExecuteT[()] - (error #1136) Column count doesn't match value count at row 1


    So sieht meine Datenbank aus.

    Wo ist der Fehler, bzw was bedeutet das?

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Ich möchte bald auf MySQL umsteigen und soweit ich nun weiss ist R8 die neuste Version von BlueG richtig?


    So nun meine Fragen, seid mir deshalb nicht böse aber ich kenne mich damit noch nicht so sehr aus und möchte es erst erlernen.


    • Ist das Tutorial so wie du es da oben gemacht hast auf dem neusten Stand?
    • Ist deine Art Ressourcensparend?
    • Gibt es irgendwelche lücken wo man was verbessern könnte, oder hast du das schon gemacht?(siehe Kommentar von: d0.)
    • Kann ich damit auch gleich ein Forum Account erstellen sodass der User dann seine Ingame Statistik auch im UCP sieht?
    • Kann ich, wenn ich mein Skript nun auf MySQL schreibe das auch ohne Webspace machen? Also, da probeweise nur auf meinen Computer?
    • Muss man die MySQL Version eigentlich immer Updaten? Also z.B. später auf R9 oder so? Oder ist das egal, sodass ich mit R8 auch in 2 Jahren arbeiten kann?


    Ich würde mich sehr über eine schnelle und Hilfreiche Antwort vom Threadersteller( NicoAiko) freuen!

  • @Famacertech


    1. So wie ich es sehe ist es mit den neusten Funktion gefüttert mittlerweile ist die R7 r31 version draußen. So gesehen kann man garnicht sagen das die R8 Version wo mal kurzeitig unter dem Namen draußen war gibt :D aber da sist ja nebensächlich. Das Plugin wird von Maddinat0r weiterentwickelt und BlueG macht soweit ich weiß nichts mehr dran.


    2. Also es gibt noch paar Verbesserungsmöglichkeiten, jedoch im großen und ganzen passt das.


    3. Man kann einfach die Spielervariabeln vor dem einloggen resetten oder kurz vor dem Laden.


    4. Das ist möglich warum nicht du kannst das entweder unabhängig von dem MySQL Server machen der vom Server benutzt wird, also direkt auf einem anderen Server auch noch speichern einfach dazu eine weitere verbindung eröffnen oder das ganze über diesen MySQL Server laufen lassen. Du kannst auch ein Forum accoutn direkt erstellen
    einfach einen weiteren account bei der WBB Datenbank für die User einen neuen Benutzer hinzufügen die jeweiligen querys findest du durch ein wenig suchen in den php datein nur musst du selbst das Passwort crypten.


    5. Ja das geht dafür gibt es Xampp(siehe tutorial von maddin) oder Wamp einfach mal googlen ( Vorsicht skype blockeirt da gerne mal den Port)


    6. Das ist dir überlassen du kannst machen was du willst jedoch updates sind nicht umsonst updates, dabei werden codefehler gefixxt und dieser auch optimiert und neue
    Funktionen kommen dazu.

  • 0 steht eig. für die Zeile.. und nicht für 0 als wert


    //edit
    es wird sozusagen richtig ausgelesen, guck doch in die Datenbank was für ein Wert für "Adminlvl" steht,
    kann ja sein das du es falsch speicherst so das es soweit du dich ausloggst wieder auf 0 stellt..

    mfg
    Ali ;)