E-Mail Verifizierung bei der Registrierung

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
    • Offizieller Beitrag

    Lös das doch per Verifizierungslink den du per Mail verschickst und welcher beim Anklicken dann den Verifiziert-Status auf 1 setzt (einfacher als einen Code einzugeben)


    „Nicht das, was du nicht weißt, bringt dich in Schwierigkeiten, sondern dass, was du sicher zu wissen glaubst, obwohl es gar nicht wahr ist.“
    Mark Twain

    ---
    ICH BIN NUR HIER UM LEUTE ANZUSCHREIEN

  • Den Code per Random genieren.
    PlayerInfo[playerid][pRegCode] = random(900000) + 100000;


    Das per Query speichern, wie normal auch
    UPDATE spieler SET pregcode = '%d' WHERE name = '%s';


    Und dann im Dialog eingeben lassen und prüfen
    SELECT * FROM spieler WHERE pregcode = '%d' AND name = '%s';

  • In meinem Spieler Enum gebe ich nun das pRegCode an.



    enum pDataEnum
    {
    p_id,
    bool:pLoggedIn,
    pName[MAX_PLAYER_NAME],
    pRegCode,
    pLevel,
    pMoney,
    pKills,
    pDeaths
    }
    new PlayerInfo[MAX_PLAYERS][pDataEnum];


    Okay, also ich generiere den Code bei dem Register Dialog.



    if(dialogid == DIALOG_REGISTER)
    {
    //Generiere einen Random Code
    PlayerInfo[playerid][pRegCode] = random(900000) + 100000;


    //Spieler hat Abbrechen gewählt
    if(!response) return Kick(playerid);



    //Wenn der Spieler kein, oder ein zu kurzes, Passwort eingegeben hat
    if(strlen(inputtext) < 3) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Script Devilz Registration", "Hallo,\n\nBitte gib dein gewünschtes Passwort ein um dir einen Account zu erstellen.", "Ok", "Abbrechen");



    //Wenn alles passt wird der Spieler in der Datenbank angelegt
    //Als Verschlüsselung für das Passwort wird MD5 verwendet
    new query[256];
    mysql_format(handle, query, sizeof(query), "INSERT INTO spieler_accounts (name, password) VALUES ('%e', MD5('%e'))", PlayerInfo[playerid][pName], inputtext);



    //Das Query wird abgesendet und die playerid an OnUserRegister übergeben
    mysql_pquery(handle, query, "OnUserRegister", "d", playerid);
    SendMail( "your.email@here.ok", "roleplay.server@example.com", "Roleplay \"Server\"", "My \"måïlër\" & it's sübjéct!", "Hèllö höw årë yoü? I'm \"writing\" weird simply to test if my mailer script can handle it without any problems. Göt å próblëm wïth thät?" );


    return 1;
    }


    Aber wohin mit dem anderen Zeugs, und wie setze ich den Code in den E-Mail Text?

  • Aber irgendwie ist das ganze unübersichtlich. Finde ich persönlich, da ich hier ein Dialog mache, also ein Register, aber der ist irgendwie als WirrWar, dann ein SPielerupdate? Wo genau hin damit, also in welchem public, und dann soll ich den Code Senden?! Ja nur kapiere ich das nicht so ganz, zudem muss ich auch eine E-Mail Blacklicste machen, als Include namens BlockedMails.inc, und alle @spam.xyz und Co Addressen sollen dann eine Meldung bekommen das diese Addresse nicht erlaubt ist etc.

  • Möchte ich aber nicht machen. Dafür habe ich auch die Möglichkeit in PAWN


    Zumal wie mache ich es das ich die eingegebene E-Mail Addresse vom Spieler in die Form übernehme?

  • Den Text für SendMail musst du noch mit format formatieren, damit der Code drin steht.
    new str[256];
    format(str, sizeof(str), "Vielen Danke für deine Registrierung, um deinen Account zu aktivieren, gib bitte nachfolgenden Code ein : %d", PlayerInfo[playerid][pRegCode]);
    SendMail( "account@script-devilz.to", "account@script-devilz.to", "Script Devilz Account Validierung", "Bitte verifiziere deinen Account", str );


    In die Datenbank musst du den Wert nicht mal speichern, weil der Code ja direkt danach geprüft wird.


    Das anlegen des Kontos darfst du aber erst nach Eingabe des korrekten Codes machen:
    mysql_format(handle, query, sizeof(query), "INSERT INTO spieler_accounts (name, password) VALUES ('%e', MD5('%e'))", PlayerInfo[playerid][pName], inputtext);

  • Das erste muss also eine Spielereingabe sein!

    Anstatt des Passwortes muss die E-Mail eingegeben werden.



    Das anlegen des Kontos darfst du aber erst nach Eingabe des korrekten Codes machen.

    ^
    Das Passwort wird also erst nach korrekter Eingabe des Codes eingegeben. Dann wird auch der INSERT gemacht.



    Auf eine korrekte Mail kannst du hiermit prüfen:
    http://forum.sa-mp.com/showthread.php?t=247893

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