Ich habe es mit einer MySQL-Tabelle realisiert. Beim Registrieren muss der User seine Mailadresse und ein Passwort eingeben. Beides wird per PHP in dieser Tabelle gespeichert. Zusätzlich generiere eine Zufallsnummer per
$zufall = rand(10000000,99999999);
und speichere diese ebenfals. Der User bekommt dann die übliche Mail mit dem Link der Registrierung und der Zufallsnummer.
Wenn Mailadresse und Nummer gleich den gespeicherten Daten ist, wird der Status auf "registriert" geändert. Sollte ziemlich sicher sein. Ein Angreifer müsste ja sowohl die Mailadresse UND die Nummer kennen. Selbst wenn er den Code genau kennt, müsste er viel rumprobieren.
Ich habe nicht gestgelegt, dass die Registrierung via APP abgeschlossen werden muss, ansonsten könntest Du auch die IP-Adresse mitspeichern und abfragen. D.h. dann aber, dass der User die Registrierung dann recht schnell abschließen muss (sonst andere IP-Adresse)