2016-04-03 21 views
-1

So bin ich ein bisschen ein Anfänger, wenn es um Anmeldung/Anmeldung sowie E-Mails geht. Mein Problem ist, dass ich eine Bestätigungs-E-Mail erstellen möchte. Ich habe bereits eine funktionierende E-Mail, die Ihnen gesendet wird, wenn Sie auf die Schaltfläche "Anmelden" klicken (wenn Sie überprüfen möchten, dass es sich um rediku.com handelt). Das Problem bestand darin, dass die E-Mail ursprünglich erstellt wurde und ein Formular mit einem ausgeblendeten Feld enthielt, das über ein generiertes Token verfügte, mit dem der Benutzer identifiziert und überprüft werden konnte. Leider blockieren E-Mail-Clients E-Mails mit Formularen. Also musste ich auf eine Ankerverbindung zurückgreifen.So überprüfen Sie neue Konten

Im Grunde ist meine Frage ... Wie kann ich ein bestimmtes Personenkonto überprüfen, indem ich ihnen eine E-Mail mit einem Link sende?

+0

prüfen einige der Aktivierung Sie sich für Hinweise bekommen haben. Senden Sie einfach einen Link mit einem Parameter 'yoursite.com/verify.php? Token = someokenhere', auf dem Sie das Token verifizieren (wenn es nicht abgelaufen ist). – JimL

+0

Welchen Aspekt hast du damit ein Problem? Was hast du bisher versucht? – NineBerry

+0

Ich habe versucht, versteckte Form-Tags mit meinem Token zu verwenden, aber leider blockieren E-Mail-Clients das ... Ich weiß nicht, wo ich überhaupt mit so etwas anfangen soll. – joeldesante

Antwort

0

Ich nehme an, Sie haben ein Anmeldeformular auf Ihrer Website. Ich nehme an, dass Sie die Daten an eine Datei namens performRegistration.php senden.

innen performRegistration.php:

// TBD sanitizing input data 
$newUser = new User(); // I am assuming you build a class for your users 
$newUser->setVerified(false); 
// TBD save form data to user object 
// generate a custom key for new user 
$newUser->setRegisterKey = MD5('someSaltString'.date('u')); // very basic! 
$newUser->save(); // validate data (like user already registered, and stuff like that) and save to db 
$newUser->sendRegistrationMail(); // I like libs like swiftmailer 

Wie @JimL wies darauf hin, sollten Sie eine grundlegende Verbindung mit einem Token verwenden. Ich würde so etwas wie tun: yoursite.com/verify.php?verify[username]=aUsername&verify[token]=theMd5TokenGenerated So können Sie nach dem Benutzernamen innerhalb Ihrer Datenbank suchen und überprüfen Sie den entsprechenden Schlüssel generiert. Sie müssen sicherstellen, dass zwei Benutzer nicht den gleichen Registrierungsschlüssel erhalten, wenn Sie den Datensatz während des Überprüfungsvorgangs nachschlagen möchten, wenn Sie dem Link nicht den (eindeutigen) Benutzernamen hinzufügen.

Innen verify.php:

// TBD catch $_GET and sanitize data 
$getVars = $_GET['verify']; 
if(array_key_exists('token', $getVars)){ 
    if(!empty($_GET['token']) && !empty($_GET['username'])) { 
     // TBD get user from db where username and key match the submitted values from the link 
     // if you can find a matching dataset: 
     $newUser->setVerified(true); 
     // start a session, add a cookie, login user 
     // do some great stuff 
    } 
} 
+1

Dies ist jedoch sehr einfach. Bitte denken Sie daran, Bibliotheken und Frameworks zu verwenden, die sich um solche Dinge kümmern. Es gibt eine Menge Sicherheitsaspekte zu beachten ... – Hafenkranich

+0

Wenn ich versuche, die GET-Token-Variable von der URL zu bekommen und ich führe das 'if (leer ($ _ GET ['token'])) {}' es als leer . – joeldesante

+0

Wie sieht der Link aus? – Hafenkranich

Verwandte Themen