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



## jackie05 (14. Mai 2007)

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


----------



## Neurodeamon (15. Mai 2007)

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


----------



## jackie05 (15. Mai 2007)

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


----------



## KD3 (15. Mai 2007)

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


----------



## Neurodeamon (15. Mai 2007)

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:


```
$token = md5(uniqid(rand(), true));
```


----------



## TchiboMann (15. Mai 2007)

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^^


----------



## KD3 (15. Mai 2007)

achso ok, danke sehr  Werde es dann in Zukunft so machen, gut zu wissen

MfG
KD3


----------

