Eine Email senden mit aktivierungslink und dann erst in die MySQLDatenbank eintragen?

jackie05

Erfahrenes Mitglied
Hallo,
ich hab mal wieder ein problem und zwar, habe ich eine seite indem man Sachen eintragen kann über ein Formular, aber ich möchte wenn man es absendet, dass erst an mich eine Email gesendet wird mit einer URL, wenn ich dort drauf klicke, dann soll es erst in die MySQL Datenbank eingetragen werden.
Die Email Funktion kann ich, aber ich weiss nicht, wie ich die URL die Sachen mitgeben kann und wenn ich da drauf klicke, das die sachen dann eingetragen werden die eigegeben wurden.
Könnt ihr mir vieleicht ein beispiel posten, wie man das machen kann?
Danke euch schonmal.

MfG Chris
 
Du packst die Sache vielleicht falsch an.
Füge der Tabelle eine weitere Spalte an (bool) und nenn sie z. B. "aktiv"
Beim Eintragen wird dir a) eine mail geschickt und b) ein Eintrag in die DB vorgenommen.
Bei diesem Datensatz setzt du aktiv = false
Erst wenn Du den aktivierungslink betätigst wird der Datensatz aktiviert (aktiv = true).

Gruß,
nd
 
Danke Dir, ich hab ja eine weitere spalte angelegt namens "actavate" und wenn man einen eintrag hinzufügt über mein Formular, dann ist dieser wert erstmal 0 und wenn ich die aktivierungs link betätige, dann soll es auf 1 gestellt werden.
Aber ich weiss nicht welche daten der link haben muss, also über die ID finde ich ja raus, welcher eintrag das ist, aber wie kann ich wenn ich die mail bekomme und auf dem link klicke, das es dann in der Datenbank auf 1 gestellt wird?

MfG Chris
 
hmm.....

Also ich würde es so ungefähr machen:

Es gibt eine activate.php und diese reagiert nur wenn eine GET Variable "acode" gesetzt ist....

Also wenn z.B der nickname KD3 wäre von dem Registrierten Usern dann wäre ja der MD5 Hash:

85c1247b11a01c1c2987f6d2678bc95f

Wenn dann www.domain.de/activate.php?acode=85c1247b11a01c1c2987f6d2678bc95f aufgerufen wird dann wird in der sql db auch ein vergleichbarer hash gesucht und wenn er gefunden ist dann wird dieser account aktiviert ansonsten wird natürlich eine Fehlermeldung ausgegeben :)

MfG
KD3
 
KD3 hat es schon geschrieben. Ein Hash generieren, diesen in eine weitere spalte eintragen und diesen per Mail zu Dir schicken.
Ich würde aber nicht den Namen nehmen, sondern einen zufälligen Hash:

PHP:
$token = md5(uniqid(rand(), true));
 
jopp, meene vorredner haben scho recht ;)

generiere dir einen (zufälligen!) code (nimm ruhig den von Neurodeamon), speicher den in der Datenbank mit demselben Userbeitrag ab (spaltenname z.B. actcode), setze dabei eine weitere spalte (activated) auf 0, sende eine Mail an den User mit dem Link (dateiname z.B. activate.php => link: http://www.url.de/activate.php?actcode=xxxxxxxxxx) und gleiche diese $_GET mit dem in der Datenbank gespeichertem Code ab und schalte gegebenenfalls frei oder gib ne fehlermeldung aus.

im prinzip sehr simpel und effektiv^^
 
Zurück