Hey!
Wenn man mir ansonsten Verbesserungsvorschläge liefern kann, darum wäre ich auch dankbar!
Meine Lösung wäre:
1. Formular anzeigen
2. Eingaben in eine DB speichern + Datum
3. Mail an User mit Aktivierungslink (z.B. mit ID des Datensatzes in der Tabelle + weiterem Vergleichswert)
4. bei Linkaufruf, den Aktivierungslink gegen den DB-Eintrag prüfen
5. bei erfolgreicher Prüfung Script mit Download starten und Mail an Admin bzw. Eintrag in einer zweiten Tabelle und deren Einträge dann automatisiert aller x Stunden oder Tage eine Mail an den Admin; Eintrag aus der DB löschen
6. ansonsten Fehlermeldung und Formular anzeigen
7. Verfallene Einträge in der DB löschen
Vorteile:
keine Session, keine Cookies, kein direkter Download-Link
Nachteil:
Du brauchst eine Datenbank und in der stehen dann auch noch persönliche Daten der Benutzer.
Grüße, Matze