DB-Eintrag ueber E-Mail (Link klicken) verifizieren / aktivieren
am 23.09.2004 17:11:13 von Michael RittwegerHallo, allerseits!
Ich würde gerne etwas realisieren, das ich schon öfters auf einigen Seiten
gesehen habe. Leider fehlt mir dazu etwas der Ansatz:
a) Ein User füllt Felder eines Formulars (anzeige_neu.php) aus. Durch
"Absenden" wird in _blank ein neues Script (anzeige_eintragen.php)
aufgerufen.
b) Es wird nochmal alles hübsch formatiert dargestellt, auf Gültigkeit
überprüft und ggf. als Datensatz in eine Tabelle eingetragen (oder eine
Fehlermeldung ausgegeben). Dabei erhält ein Feld "verifiziert" des
Datensatzes den Wert "0".
c) Jetzt (also bei erfolgreichem Eintrag in die Tabelle) soll eine E-Mail
generiert werden, die an die Adresse geschickt wird, die der User mit
angegeben hat. In der E-Mail soll dann ein Link stehen, den er anklicken
kann.
(Das soll der Empfänger natürlich nur, wenn er wirklich der Absender der
Formular-Daten war und er auch wirklich ein Aktivieren des Datensatzes
will.)
d) Durch den Link (verifizieren.php) soll ohne weiteres Kuddelmuddel der
Wert im Feld "verifiziert" des entsprechenden Datensatzes von "0" auf "1"
geändert werden. Einfach der Hinweis "Eintrag erfolgreich aktiviert" reicht.
Die Schritte a) und b) stellen kein Problem dar, sind weitestgehend
realisiert. Auch d) müßte ohne große Probleme machbar sein. Probleme
bereitet mir c), insbesondere das Erstellen eines sinnvollen Links, denn
eine Mail verschicken bekomme ich auch noch hin.
Ich schätze mal, der Link müßte so in etwa aussehen:
http://www.meinedomain.tld/verifizieren.php?id=langesgeraffe l
Aber woraus und wie berechne ich jetzt am sinnvollsten "langesgeraffel"? Die
ersten Felder, die mir dazu einfallen würden: "anzeigeid" (integer, autoinc,
primary), "spitzname" (varchar 20, unique), "anzeigedatum" (datetime,
index).
In jedem Fall sollte der Parameter eine möglichst kryptische Darstellung
(z.B. 16-stellig hexadezimal?) der zugrundeliegenden Felder darstellen. Ich
möchte dadurch verhindern, daß jemand vollautomatisiert (und massenhaft)
Einträge in meine DB vornimmt, womöglich unter fremden Namen, und auch noch
aktiviert. (sonst könnte ich ja auch id=spitzname benutzen...)
Meine Fragen dazu jetzt:
a) Mit welchem Algorithmus könnte ich Felder des Datensatzes so
verschlüsseln, daß sie hübsch kryptisch aussehen, aber auch wieder
entschlüsselt werden können, um den passenden Datensatz zu finden?
b) Ich wollte (vorerst) ohne Session-IDs auskommen. Geht das? Oder komme ich
ohne die kaum sinnvoll weiter? Sollte ich dann die Session-ID als
Link-Parameter nehmen? Die müßte dann als Feld mit in den Datensatz, oder?
c) Oder bin ich völlig auf dem Holzweg und sollte einen ganz anderen Ansatz
benutzen?
Für direkte Hilfe und Verweise auf passende Literatur wäre ich in jedem Fall
dankbar.
Gruß, Michael