PHP Registrierung mit Bestätigungsmail

furryhamster

Lt. Commander
Registriert
Okt. 2008
Beiträge
1.101
Hi,

bei einem Webshop soll bei der Registrierung ein Bestätigungslink verschickt werden, der vor dem ersten Login angeklickt werden muss, wie es bei vielen Foren bekannt ist.

Leider kann ich hierzu nichts bei Google finden, nur für Newsletter. Gerne könnt ihr mir auch mögliche Google- Suchbegriffe nennen.

Mein Problem bei der ganzen Sache ist, dass ich nicht weiß wie ich es hinbekomme, dass durch klicken eines generierten Links der Account freigeschaltet wird und anschließend auf eine Seite weitergeleitet wird ala "Ihr Account wurde freigeschaltet". Wie bekomme ich es hin, dass z.B. www.webshop.de/bestaetigung/bxuos4ugoi93kls richtig "interpretiert" wird?
 
mit einer get-methode und der passenden abfrage
 
Ich würde erstmal eine Tabelle in der Datenbank erstellen, wo alle Bestätigungslinks enthalten sind und natürlich auch mit dem Anwender verknüpft sind.

Dann brauchst du nurnoch ein Script, dass diesen Bestätigungscode ausliest und in der Datenbank guckt ob es den Code gibt und darauf den Anwender freischaltet.

Ansich nichts komplexes wenn man sich etwas mit PHP auskennt ;)
 
nur mal ganz simple idee:
beim account erstellen wird ein zufallswert erstellt. dieser wird zusammen mit den restlichen daten in die datenbank geschrieben. in der datenbank befindet sich desweiteren ein wert für bestätigt (0/1) der anfangs auf 0 steht. solange dieser wert 0 kann er sich nicht einloggen.
wird die email verschickt wird das template der email geparsed und automatisch ein link generiert der die variablen der nutzerid und des zufallswertes enthält.
webshop.com/bestaetigung/?user={$userid}&reg={$zufallswert}

die in bestätigung liegende php datei fragt dann per $_GET[] die variablen user und reg ab und vergleicht sie mit den werten in der datenbank - stimmen sie überein wird der wert "bestätigt" in der datenbank auf 1 gesetzt und der user kann sich einloggen.

die variablen kann man natürlich nennen wie man möchte..
 
Die Idee mit der Get-Methode ist gut. Ich würd es erstmal auf diese Weise probieren.

@dani3l: Hast du vlt. einen Link so solch einem Script? Danach habe ich gesucht, jedoch leider nichts gefunden. Würde dies gerne als Alternative in Erwägung ziehen.
 
@furryhamster
Äh die Vorschläge von GabbaHansn, dani3l und karuso beinhalten alle drei die "GET-Methode", auch wenn nicht explizit erwähnt. Anders lässt sich eine individueller Link auch nicht so einfach erstellen (ich sagte "einfach" :D).

Ich glaube kaum, dass du dafür ein fertigen Skript findest, da diese immer an ein System gekoppelt sind (z.B: Benutzertabellen, Rechtsysteme, Protokoll-Speicherung..)

Desweiteren würde ich empfehlen einen MD5-Hash als "Zufallswert" zu nehmen, generiert z.B. aus den Benutzername+E-mail+Zufallszahl.
 
Nope, habe ich nicht... wieweit kennste dich den mit PHP aus?
Weil ansich tut das Script dann nur:
- Get Wert auslesen
- Bestätigungslinktabelle durchsuchen
- Account freischalten falls der Get Wert passte
- Bestätigungslink aus der Tabelle löschen

Mehr braucht man nicht, also 2 Tabellen und max. 3 SQL Abfragen ;)
 
ja sollte ich wohl hinkriegen. bin zwar php anfänger, hab allerdings in der richtung schon ein bisschen gemacht. wichtigste war für mich die idee mit dem get, da bin ich erst nicht drauf gekommen
 
Was spricht dagegen, das Passwort bei der Registrierung zu generieren und via Email zu verschicken.

Wenn sich der Benutzer dann einloggt, kann er das Passwort ändern - dennoch hast Du die Email-Adresse verifiziert, da der Benutzer sich ja mit dem richtigen Passwort eingeloggt hat.
 
mach einfach mal was du dir denkst - basierend auf den posts weiter oben - , poste dann den code rein und wir werden mal drübesehen ;)
 
Mal so interessehalber, würde man dafür eine eigene Tabelle anlegen (kommt mir etwas overpowered vor)?

Wie wird das bspw. bei einer Forensoftware geregelt?
 
Naja, man kann dafür eine eigene Tabelle anlegen, muss man aber nicht. Wenn man seine Datenbank nicht mit Tabellen vollstopfen will, reicht auch ein einfaches Tabellenfeld, bei dem der Wert auf 0 (nicht aktiviert) oder auf 1 (aktiviert) steht.

Andernfalls kann man natürlich auch eine neue Tabelle mit dem Benutzernamen und den Daten nehmen, ein Feld für den Code nehmen und wenn der Code aktiviert wurde und zum Usernamen passt, dann kannst du die Daten ja einfach in eine User Tabelle kopieren und den adneren Eintrag in der Aktivierungstabelle löschen.
 
Zurück
Oben