Email abfragen unabhängig von Testbearbeitung

More
2 years 6 months ago #112082 by rfrf
Hallo zusammen,
wie kann am Ende einer Untersuchung für eine Verlosung unabhängig von der Testbearbeitung die E-Mailadresse der Teilnehmer abfragen?

Lieben Dank und viele Grüße

Please Log in to join the conversation.

More
2 years 6 months ago #112092 by holch
Was verstehst du unter "unabhängig von der Testbearbeitung"?

I'm not a LimeSurvey GmbH member. I answer at the LimeSurvey forum in my spare time. No support via private message.
Some helpful links: Manual (EN) | Question Types | Workarounds

Please Log in to join the conversation.

More
2 years 6 months ago #112104 by steve_81
Hi,

ich hatte bis eben eine ähnliche Frage im englischen Forum.

Und habe folgende Lösung als Vorschlag erhalten:
Eine zweite "Umfrage" erstellen mit der Abfrage der persönlichen Daten und automatisch nach Beendigung des Tests darauf weiterleiten.

Vielleicht hilft Dir der Hinweis auch.

VG
Stefan
The following user(s) said Thank You: rfrf

Please Log in to join the conversation.

More
2 years 6 months ago #112185 by rfrf
Hallo,

also die Idee ist eben, anschließend an die Testbearbeitung die email abzufragen (freiwillig) und es soll verhindert werden, dass sich zbsp durch AddBlocker dieses "popup" nicht geöffnet wird, aber ich versuchs mal mit dem letzten tipp.

Lieben Dank für die schnellen Antworten!

Please Log in to join the conversation.

More
2 years 6 months ago #112250 by steve_81
Okay, ich habe ein bisschen gebastelt, da ich eine ähnliche Lösung suchte.

Folgendes Roh-Beispiel kann ich anbieten. Vielleicht umständlich, aber mit meinem Wissen und Mitteln umsetzbar.

Idee: Auf der Abschlussseite (Vielen Dank für Ihre Teilnahme etc.) wird ein Formular aufgebaut, das beim Button "Absenden" eine javacript Funktion aufruft, die per jQuery eine php aufruft, von der aus dann eine Mail an eine beliebige Mail verschickt wird. So, das ganze per Quelltext:

javascript als Quellcode in die Endnachricht:
<SCRIPT type="text/javascript"></SCRIPT>
<script>
function senden() {
	$.post("http://[...]/formularsenden.php", //Ort der eigenen 
    	{
	vorn:document.getElementsByName("vorname")[0].value,
	nachn:document.getElementsByName("nachname")[0].value,
	mails:document.getElementsByName("mail")[0].value,
    	},
    	function (data) {
	alert (data);
    	});
};
</script>
 
<form action="" name="Formular">
Vorname: <input id="vorname" name="vorname" type="text" /><br />
Nachname: <input id="nachname" name="nachname" type="text" /><br />
E-Mail: <input id="mail" name="mail" type="email" /><br />
<input id="subm" name="subm" onclick="senden()" type="button" value="Absenden" /> </form>

Eigene php-Datei (hier: formularsenden.php)
<?php
 
 
require("../application/third_party/phpmailer/class.phpmailer.php");
 
 
$vorname = $_POST["vorn"];
$nachname = $_POST["nachn"];
$maily = $_POST["mails"];
 
$text = "<p>Es hat jemand das Formular ausgef&uuml;llt.<br>Die Daten lauten:</p>Vorname: ";
$text .= $vorname;
$text .= "<br>Nachname: ";
$text .= $nachname;
$text .= "<br>E-Mail: ";
$text .= $maily;
 
$mail = new PHPMailer();
 
$mail->IsSMTP();                                      // set mailer to use SMTP
$mail->Host = "mailhost.exampledomain.com";  // specify main and backup server
$mail->SMTPAuth = false;     // turn off SMTP authentication
$mail->Username = "";  // SMTP username
$mail->Password = ""; // SMTP password
 
$mail->From = "mail@exampledomain.com";
$mail->FromName = "Mr. Smith";
$mail->AddAddress("admin@exampledomain.com", "Mr. Smith");
//$mail->AddAddress("ellen@example.com");                  // name is optional
$mail->AddReplyTo("admin@exampledomain.com", "Information");
 
$mail->WordWrap = 50;                                 // set word wrap to 50 characters
$mail->IsHTML(true);                                  // set email format to HTML
 
$mail->Subject = "[Formular] Teilnahme am Gewinnspiel";
$mail->Body    = $text;
 
//$mail->SMTPDebug = 1; //for debugging
 
if(!$mail->Send())
{
    echo "Message could not be sent. <p>";
    echo "Mailer Error: " . $mail->ErrorInfo;
    exit;
}
 
echo "Mail sent";
 
?>

Wenn ich richtig liege ist das noch anfällig für injections, da sollt eman noch etwas prüfen.
Vielleicht fühlt dsich der ein odere andere bewogen, den code noch zu verbessern. Gilt natürlich allgemein.

VG
Stefan
The following user(s) said Thank You: rfrf

Please Log in to join the conversation.

More
2 years 6 months ago #112405 by rfrf
Hallo,
lieben Dank für die schnelle Antwort. Du hast es hier mit einem absoluten Laien zu tun, deswegen die sehr dumme Frage, ich hänge dieses javascript jetzt wie genau an die Umfrage?? (oder gibt es eine Möglichkeit für Anfänger....?)

Viele Grüße und Danke!!

Please Log in to join the conversation.

More
2 years 6 months ago #112802 by steve_81
Hallo,

Entschuldigung, dass ich erst jetzt dazu komme zu antworten.

Folgende Schritte sind notwendig (in Version 2.05+):

1) In einer Umfrage bei den Umfrage-Einstellungen "Text-Elemente" auwählen.
2) Unter "Endnachricht" kann man den Abschiedstext erfassen. Direkt über dem Textfeld für die Endnachricht sind Symbole und auch der Schriftzug "Quellcode" -> diesen aktivieren.
3) Dann folgendes eingeben (zwei kleine Modifikation zu vorigem Post sind drin):
<SCRIPT type="text/javascript"></SCRIPT>
<script>
function senden() {
 
document.getElementsByName("mail")[0].style.visibility="hidden"; //Modifikation: Blendet den Button aus, damit man nicht doppelt klicken kann.
 
	$.post("http://[...]/formularsenden.php", //Ort der eigenen PHP-Datei, die die Mail mit den Formulardaten an Dich übermittelt, Inhalt siehe unten.
    	{
	vorn:document.getElementsByName("vorname")[0].value,
	nachn:document.getElementsByName("nachname")[0].value,
	mails:document.getElementsByName("mail")[0].value, 
    	},
    	function (data) {
	if (data=="Mail sent")
		{
		alert("Ihre E-Mail-Adresse wurde gespeichert.");
		}
		else
		{
		document.getElementsByName("subm")[0].style.visibility="visible"; //Gibt den Button wieder frei.
		alert(data); //Fehlermeldung wird ausgegeben.
		};
    	});
};
</script>
 
<form action="" name="Formular">
Vorname: <input id="vorname" name="vorname" type="text" /><br />
Nachname: <input id="nachname" name="nachname" type="text" /><br />
E-Mail: <input id="mail" name="mail" type="email" /><br />
<input id="subm" name="subm" onclick="senden()" type="button" value="Absenden" /> </form>

4) Erstellen der PHP-Datei in einem beliebigen Editor. Name der Datei z.B. "formularsenden.php":
<?php
 
require("../application/third_party/phpmailer/class.phpmailer.php");
 
$vorname = $_POST["vorn"];
$nachname = $_POST["nachn"];
$maily = $_POST["mails"];
 
//Überprüfung der E-Mail auf schädlichen Code / beziehungsweise der Logik:
checkEmail($maily);
function checkEmail($adr) {
  $regEx = '^([^\s@,:"<>]+)@([^\s@,:"<>]+\.[^\s@,:"<>.\d]{2,}|(\d{1,3}\.){3}\d{1,3})$';
  $proof = (preg_match("/$regEx/",$adr,$part)) ? $part : false;
  if ($proof == false)
  {
  echo ("Ungültige E-Mail-Adresse");
  exit;  //Abbruch der PHP-Datei.
  }
  }
 
//Hier müssten eigentlich noch die anderen Formulareingaben geprüft werden. Habe aber gerade nichts passendes gefunden, bin selbst noch am Suchen.
 
$text = "<p>Es hat jemand das Formular ausgef&uuml;llt.<br>Die Daten lauten:</p>Vorname: ";
$text .= $vorname;
$text .= "<br>Nachname: ";
$text .= $nachname;
$text .= "<br>E-Mail: ";
$text .= $maily;
 
$mail = new PHPMailer();
 
$mail->IsSMTP();                                      // set mailer to use SMTP
$mail->Host = "mailhost.exampledomain.com";  // specify main and backup server
$mail->SMTPAuth = false;     // turn off SMTP authentication
$mail->Username = "";  // SMTP username
$mail->Password = ""; // SMTP password
 
$mail->From = "admin@exampledomain.com"; //your own Email-Address
$mail->FromName = "Mr. Smith"; //this is your name
$mail->AddAddress("admin@exampledomain.com", "Mr. Smith"); //this is your own Email-Address
//$mail->AddAddress("ellen@example.com");                  // additional names are possible
$mail->AddReplyTo("admin@exampledomain.com", "Information");
 
$mail->WordWrap = 50;                                 // set word wrap to 50 characters
$mail->IsHTML(true);                                  // set email format to HTML
 
$mail->Subject = "[Formular] Teilnahme am Gewinnspiel";
$mail->Body    = $text;
 
//$mail->SMTPDebug = 1; //for debugging
 
if(!$mail->Send())
{
    echo "Message could not be sent. <p>";
    echo "Mailer Error: " . $mail->ErrorInfo;
    exit;
}
 
echo "Mail sent";
 
?>

5) Ablegen der PHP-Datei auf dem Server, in diesem Beispiel "http://[...]/formularsenden.php".
6) Testen durch komplettes Ausfüllen, um auf die Endnachricht zu kommen.

VG
Stefan

Please Log in to join the conversation.