Ist es möglich vom Server mittels eine SMTP Klasse eine Verifizierungs E-Mail zu senden?
E-Mail Verifizierung bei der Registrierung
- Global Gamer
- Geschlossen
- Erledigt
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
-
-
Eventuell sowas?
http://forum.sa-mp.com/showthread.php?t=197755 -
Joa, habe mir schon etwas zusammen gebaut, nun müsste ich noch wissen wie ich einen Code generiere der in der Datnbank gewschrieben wird und dann auch per E-Mail versendet wird, und im nächsten Schritt dann eingegeben werden muss.
-
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)
-
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?
-
wie setze ich den Code in den E-Mail Text?
Per format, wie gewohnt.
Aber wohin mit dem anderen Zeugs
Nach SendMail zeigst du dem Spieler den Dialog zum Eingeben des Codes an.
-
Ach okay, also einfach einen weiteren Dialog anlegen
-
Genau
-
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.
-
Das könnte man sicherlich auch in die .php Datei setzen welche die Mail versendet
-
Möchte ich aber nicht machen. Dafür habe ich auch die Möglichkeit in PAWN
PHP
Alles anzeigenif(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( "account@script-devilz.to", "account@script-devilz.to", "Script Devilz Account Validierung", "Bitte verifiziere deinen Account", "Vielen Danke für deine Registrierung, um deinen Account zu aktivieren, gib bitte nachfolgenden Code ein : pRegCode" ); ShowPlayerDialog(playerid, DIALOG_EMAIL, DIALOG_STYLE_INPUT, "Script Devilz Registration", "E-Mail Addresse,\n\nBitte gib dein korekte E-Mail Addresse ein, damit wir dir einen Code zusenden können. Du bist nicht in der Lage einen Account zu erstellen ohne eine gültige E-Mail Addresse.\n\nBenutzt du eine Spam oder Trash Mail, wird dein Account gesperrt.", "Ok", "Abbrechen"); new query[256]; mysql_format(handle, query, sizeof(query), "INSERT INTO spieler_accounts (name, password) VALUES ('%e', MD5('%e'))", PlayerInfo[playerid][pName], inputtext); return 1; }
Zumal wie mache ich es das ich die eingegebene E-Mail Addresse vom Spieler in die Form übernehme?
-
Man würde so den Code schlanker halten aber bitte
-
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 -
Ihm geht es aber explizit um Spam Mails
-
Ich will einfach das die User eine anständige E-Mail einegeben, und keinen Spam und dann soll der User die E-Mail verifizieren und dann sollte auch ein Blacklist check gemacht werden.
-
Kann manchmal spinnen wegen den allen Anbietern^^
-
Deswegen sind auch nur gewisse Hoster in der Whitelist
web.de
gmail.com
live.de
gmx.de
t-online.deFür den Anfang