Bestätigung der Mitgliedschaft
Simon
- php
Hi,
Ich bin gerade mit meinem Script für die MItglieder Registrierung fertig geworden. Mein Problem ist aber dass eine Person die sich Registreirt hat, gleich sich gleich einloggen kann ohne seine Email Adresse zu bestätigen.
Kann mir vieleicht jemand erklären wie ich so eine Bestätigung machen kann ?
MfG
Simon
Hallo,
Eine E-Mail mit einem Link verschicken (mail()
), der "geheim" ist, also einen unerratbaren Parameter hat (z.b. http://xyz.com/?registerid=23hueiofdoisijfe) und dann das mithilfe von einem Skript prüfen und wenn richtig, dann freischalten.
mfg, Flo
Kannst du das etwas näher erklären?
MfG
Simon
Moin!
Ich bin gerade mit meinem Script für die MItglieder Registrierung fertig geworden. Mein Problem ist aber dass eine Person die sich Registreirt hat, gleich sich gleich einloggen kann ohne seine Email Adresse zu bestätigen.
Kann mir vieleicht jemand erklären wie ich so eine Bestätigung machen kann ?
Offensichtlich darf sich ein Mitglied erst einloggen, wenn es die Mailadresse bestätigt hat. Also brauchst du in der DB mindestens ein Feld für "hat bestätigt: ja/nein", und darfst den Login nur denen erlauben, die bestätigt haben.
Die Bestätigung erhältst du am einfachsten, indem du per Mail einen geheimen, nicht erratbaren Wert an das neue Mitglied sendest, welches diesen Wert dann auf deiner Webseite nochmal zur Bestätigung eingeben muss.
Das kann passieren, indem du beim Loginversuch, der aufgrund der fehlenden Bestätigung scheitert, einfach ein Formularfeld anbietest, in dem dieser geheime Wert einzutragen ist. Oder die Mail enthält direkt einen Link, der ein Skript startet und Username sowie geheimen Wert übermittelt, und dadurch die Bestätigung der Mail in die Datenbank einträgt.
Der geheime Wert sollte einen Zufallsfaktor enthalten, also gerne eine zufällige Zahl. Du kannst natürlich auch einen String aus Anmeldedaten plus Zufallszahl bilden und davon die MD5-Hashsumme bilden. Egal, wie du zu deinem zufälligen Wert kommst, am besten speicherst du ihn ebenfalls in der Datenbank ab, damit du prüfen kannst, ob der User und sein zufälliger Wert, den er zurück übermittelt, auch übereinstimmen.
- Sven Rautenberg
Also nur ob ich alles richtig verstanden hab.
Der User Regsitriert sich und in der DB steht: nicht bestätigt. Er bekommt ein Email mit einem Link. Dieser Link führt zu einer Seite die die Verbindung mit der DB aufbaut und im Bestätigungs Feld bestätigt einträgt. Das Anmeldungsscript prüft in der DB ob der User Bestätigt hat und, wenn ja, leitet den User auf die Memberseite weiter.
MfG
Simon
Moin!
Also nur ob ich alles richtig verstanden hab.
Der User Regsitriert sich und in der DB steht: nicht bestätigt. Er bekommt ein Email mit einem Link. Dieser Link führt zu einer Seite die die Verbindung mit der DB aufbaut und im Bestätigungs Feld bestätigt einträgt. Das Anmeldungsscript prüft in der DB ob der User Bestätigt hat und, wenn ja, leitet den User auf die Memberseite weiter.
So in grob. Und damit der erste sich eintragende User die URL des Skripts nicht massenweise an seine Freunde weitergibt, damit die sich ohne Mailbestätigung anmelden können, ist in dem Link zur Bestätigungsskriptseite halt ein Zufallswert enthalten, der geprüft wird. Falscher Zufallswert = keine Bestätigung.
- Sven Rautenberg
echo $begrüßung;
Das Anmeldungsscript prüft in der DB ob der User Bestätigt hat und, wenn ja, leitet den User auf die Memberseite weiter.
Von Weiterleiten war keine Rede und so etwas ist auch gar nicht erforderlich. Jede geschützte Seite muss bei ihrem Aufruf die Eingeloggtheit des Nutzers überprüfen und im Negativ-Fall darauf reagieren können. Diese Funktionalität ist also auf jeder Seite erforderlich. Statt für jede Aufgabe eine einzelne Seite zu entwerfen, auf die weitergeleitet wird, ist es sinnvoller, die dort angebotene Information in die eigentliche Seite einzuladen und statt des sonst üblichen Inhalts auszugeben. So entfallen auch Probleme wie "wo kam der Nutzer her und wie kann ich ihn da wieder hinleiten, wenn er alles korrigiert hat?" Er sollte stets auf der Seite bleiben, die er eigentlich sehen will und bekommt je nach Situation verschiedene Informationen angezeigt. Erst wenn keine Fehler auftraten bekommt er den eigentlichen Inhalt.
echo "$verabschiedung $name";
Ok,
werde dann einmal anfangen und wenn ich fertig bin hier noch mal posten.
MfG
Simon