Double-opt-in mit sendMail und Datei-Upload

Fragen zum Erstellen von Templates für webEdition.
WildnerDesigner
Member
Beiträge: 38
Registriert: Mi 27. Jun 2018, 16:53

Double-opt-in mit sendMail und Datei-Upload

Beitragvon WildnerDesigner » Mo 4. Apr 2022, 12:01

Hallo zusammen,

vielleicht kann mir jemand weiterhelfen zu einem sehr speziellen Anliegen.

Für einen Kunden haben wir ein Formular erstellt, bei dem Nutzer ein Video hochladen können und noch weitere Felder ausfüllen können.
Nach Absenden wird das Video hochgeladen und im Webspace gespeichert und per sendMail-Tag eine Mail mit Download-Link an den Websitebetreiber geschickt.

Nun möchte unser Kunde, dass vor dem Speichern der eingegeben Daten sowie des hochgelandenen Videos ein Double-opt-in durchlaufen wird.

Eine erste Idee wäre, dass der Nutzer sich zunächst registrieren muss (Kundenverwaltung mit Double-opt-in sollte ja gehen?) und dann nach Bestätigung der Mail sein Video hochladen kann.

Hat schonmal jemand etwas in dieser Richtung gemacht und könnte helfen?
Vielen Dank vorab!

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1825
Registriert: Di 7. Mär 2006, 16:50
Wohnort: Wien
Kontaktdaten:

Re: Double-opt-in mit sendMail und Datei-Upload

Beitragvon WBTMagnum » Mo 4. Apr 2022, 15:16

Hallo,

Wenn du die Daten nicht zwingend in der Kundenverwaltung brauchst, stelle mir das in der Art vor:
  • Formular bei dem die E-Mailadresse anzugeben ist.
  • Mail mit LInk zum Upload-Formular wird per E-Mail geschickt. Im Idealfall mit einem Token, das eine bestimmte Gültigkeitsdauer hat. Damit wird zumindest gewährleistet, dass die angegebene E-Mailadresse existiert.
  • Das Upload-Formular erlaubt die Eingabe ev. notwendiger weiterer Daten sowie den Video Upload.
Vielleicht ist das ja ein brauchbarer Ansatz für euch.

HTH,
Sascha

PS: Nachdem der Upload großer Dateien durchaus problematisch sein kein, würde ich hier unbedingt Lösungen empfehlen, die den Upload schon im Formular erlauben (z.B. Uploadify).

WildnerDesigner
Member
Beiträge: 38
Registriert: Mi 27. Jun 2018, 16:53

Re: Double-opt-in mit sendMail und Datei-Upload

Beitragvon WildnerDesigner » Mo 4. Apr 2022, 17:28

Hallo Sascha,

danke dir für deine Rückmeldung und den Input.
Klingt sehr gut, auch wenn wir bzgl. dem Token wohl noch etwas überlegen müssten, haben wir bislang so individuell noch nicht umgesetzt.
Unser Kunde wollte es möglichst einfach für den Nutzer haben, aber um eine zweistufige Lösung kommt man wohl nicht drum herum. Mal schauen, was er zu dem Vorschlag sagt.

Aktuell wird der Upload bim Absenden gestartet. Ursprünglich war die Anforderung auch ein ganz kleines Formular, schnell umgesetzt und ohne Ansprüche. Das mit dem DOI kam auch danach und wenn das nun gemacht wird, dann würden wir wohl auch gleich die professionelle Lösung mit Upload innerhalb des Formulars machen.

Danke dir und viele Grüße

WildnerDesigner
Member
Beiträge: 38
Registriert: Mi 27. Jun 2018, 16:53

Re: Double-opt-in mit sendMail und Datei-Upload

Beitragvon WildnerDesigner » Do 7. Apr 2022, 11:52

Hallo zusammen,

hier eine mögliche Lösung, falls jemand vor dem gleichen Problem steht und Input braucht.
Das mit dem Token ist vielleicht etwas ungewöhnlich gelöst, sollte aber gut funktionieren :D

1. Formular für DOI-Verfahren und Success-Meldung (mit GET-Parameter, siehe Punkt 2) auf Website

Code: Alles auswählen

<?php if(!isset($_GET['success'])){ ?>
	<form action="<we:url id="99"/>" method="post">
		<input type="email" name="email" required>
		<input type="text" name="Name" required>
		<input type="checkbox" name="Datenschutz" required>
		<input type="hidden" value="<we:url id="self"/>" name="Seite">
		<input type="submit" value="Absenden"/>
	</form>
<?php }else{ ?>
	Hinweis: DOI-Formular erfolgreich verschickt. Weitere Anweisungen stehen in der Mail.
<?php } ?>

2. Mail (Template für Seite ID 99, für Action von DOI-Formular)

Code: Alles auswählen

<?php
	$token = bin2hex(random_bytes(16)); // Random Zeichenfolge mit 32 Stellen als Dateinamen
	$file = fopen('pfad/zum/token/'.$token, "w"); // Datei in Pfad speichern
	fclose($file); // Datei schließen
	$url = "https://www.domain.de".$_POST['Seite']."&mail=".$_POST['email']."&name=".$_POST['Name']."&token=".$token;
	$content = "<p>Hallo ".$_POST['Name'].",</p><p>vielen Dank für Ihr Interesse an XY".<br>
	Bitte bestätigen Sie innerhalb von 24 Stunden über folgenden Link Ihre E-Mail-Adresse. Mit diesem Link gelangen Sie auch direkt zum Upload-Formular für das Video.</p>
	<p><a href='".$url."'>".$url."</a></p>
	<hr><p>Daten vom Impressum</p>";
	$_SESSION['form']['content'] = $content;
	$subject = 'Bestätigung Ihrer E-Mail-Adresse für XY';
	$recipient = $_POST['email'];
?>
	<we:sendMail id="999" mimetype="text/html" subject="$subject" from="mail@domain.de" recipient="$recipient" useformmailblock="true" useformmaillog="true"/>
	<?php
		header("Location: ".$_POST['Seite']."?success");
		exit();
	}
?>

3. Mail (Template für Seite ID 999, für sendMail aus Punkt 2)

Code: Alles auswählen

<?php echo $_SESSION['form']['content']; // Hier wird nur der Mail-Inhalt zusammengefasst und dann per Dokument versendet ?>

4. Eigentliches Upload-Formular

Code: Alles auswählen

<?php
	$token = 'https://www.domain.de/pfad/zum/token/'.$_GET['token']; // GET-Token auf Webspace suchen
	$check = fopen($token, 'r'); // Prüfen, ob Token gelesen werden kann
	if($check && isset($_GET['mail'])){ // Wenn Token passt und Mail in GET gesetzt ist
?>
	<form action="<we:url id="9999"/>" method="post" enctype="multipart/form-data">
		Hier das eigentliches Upload-Formular mit weitere Angaben
	</form>
<?php }else{ ?>
	Hinweis: Token abgelaufen oder hier direkt nochmal das DOI-Formular anzeigen lassen
<?php } ?>

5. Löschen der Tokens vom Webspace, die älter als 24 Stunden sind, mit Cronjob (z.B. jede Stunde ausführen)

Code: Alles auswählen

find /absoluter/pfad/zum/token -type f -mmin +1440 -delete


Zurück zu „webEdition Templates erstellen (we:Tags)“

Wer ist online?

Mitglieder in diesem Forum: Ahrefs [Bot] und 6 Gäste