1
Am Ende des Formulares habe ich ein paar Checkboxen eingebaut, die es gilt zu prüfen.
Der Einbau scheint zu klappen, die Überprüfung jedoch nicht.
Checkboxen:
Überprüfung:
Die habe ich an diversen Stellen im Script platziert, ohne Erfolg.
Ist da irgendwo ein Fehler drin?
Müßte ich dies anderst lösen?
Wo genau muß der Einbau erfolgen?
Der Einbau scheint zu klappen, die Überprüfung jedoch nicht.
<?php
//Fehlermeldungen ausgeben falls vorhanden
ini_set('display_errors', 1);
error_reporting(E_ALL);
//include des Kopfbereiches
include("include/kopf.php");
//include der Navigation
include("include/navigation.php");
//include Anfang des ganzen Inhaltes
include("include/anfang-ganzer-inhalt.php");
?>
<?php
// Import PHPMailer classes into the global namespace
// These must be at the top of your script, not inside a function
use PHPMailer\PHPMailer\PHPMailer;
//use PHPMailer\PHPMailer\Exception;
require 'PHPMailer/src/PHPMailer.php';
//require 'PHPMailer/src/Exception.php';
require 'PHPMailer/src/SMTP.php';
?>
<!-- Anfang Linker Inhalt -->
<div id="linkerinhalt">
<title>Anmeldung</title>
<?php
include_once('zugang_ppc.php.inc');
$max_jugenda = 40;
$max_jugendb = 40;
$max_dklasse = 64;
// sql-Abfrage 1 - Ermitteln Anzahl Jugend B (Turnierklasse = 1)
$query = mysqli_query($mysqli, 'SELECT Count(*) FROM anmeldungen_2019_samstag WHERE gemeldeteKlasse = \'1\'');
list($num_jugendb) = mysqli_fetch_row($query);
// sql-Abfrage 2 - Ermitteln Anzahl Jugend A (Turnierklasse = 2)
$query = mysqli_query($mysqli, 'SELECT Count(*) FROM anmeldungen_2019_samstag WHERE gemeldeteKlasse = \'2\'');
list($num_jugenda) = mysqli_fetch_row($query);
// sql-Abfrage 3 - Ermitteln Anzahl D-Klasse + Teilweise Damen B (Turnierklasse = 3)
$query = mysqli_query($mysqli, 'SELECT Count(*) FROM anmeldungen_2019_samstag WHERE gemeldeteKlasse = \'3\'');
list($num_dklasse) = mysqli_fetch_row($query);
unset($query);
?>
<?php
//begin POST form check
$show_form = false;
//entweder einfacher Check (nur namen angeben), oder erweiterter via Regularexpression ([name,regex,errormsg])
$frm_field = array(
array(
'email',
'/^[\w\-\.\+]+@([\w\-]+\.?)+$/',
'Bitte gültige E-Mail eintragen!'
),
'vorname',
'nachname',
array(
'geschlecht',
'/^(M|W)$/',
'Bitte Geschlecht auswählen!'
),
array(
'geburtsjahr',
'/^(19|20)\d\d$/',
'Bitte gültiges Geburtsjahr eintragen (z.B. 1967)!'
),
'ttr',
'verein',
array(
'turnierklasse',
'/^[1-5]$/',
'Bitte gültige Turnierklasse auswählen!'
),
array(
'email_alt',
'/(^[\w\-\.\+]+@([\w\-]+\.?)+$|^$)/',
'Optionales Feld, darf leer gelassen werden oder weitere gültige E-Mail eintragen!'
)
);
$frm_error = array();
if (isset($_POST['email'])) {
foreach ($frm_field as $val) {
if (!is_array($val)) {
if (empty($_POST[$val])) {
$_POST[$val] = '';
$frm_error[$val] = ' <span class="rot">Bitte ausfüllen!</span>';
$show_form = true;
} else
$frm_error[$val] = '';
} else {
if (!isset($_POST[$val[0]])) {
$_POST[$val[0]] = '';
$frm_error[$val[0]] = ' <span class="rot">Bitte ausfüllen!</span>';
$show_form = true;
} elseif (!preg_match($val[1], $_POST[$val[0]])) {
$frm_error[$val[0]] = ' <span class="rot">' . $val[2] . '</span>';
$show_form = true;
} else
$frm_error[$val[0]] = '';
}
}
} else {
foreach ($frm_field as $val) {
if (is_array($val)) {
if (!isset($_POST[$val[0]]))
$_POST[$val[0]] = '';
$frm_error[$val[0]] = '';
} elseif (!isset($_POST[$val])) {
$_POST[$val] = '';
$frm_error[$val] = '';
}
}
$show_form = true;
}
unset($frm_field);
//vom check oben nicht betroffen (da optional)
if (!isset($_POST['eintrag']))
$_POST['eintrag'] = '';
if (!isset($_POST['turnierklasse_ex']))
$_POST['turnierklasse_ex'] = '';
//end POST form check
if (!$show_form) { //sende anfrage / eintragen
$_POST['turnierklasse'] = intval($_POST['turnierklasse']);
$turnierklassestr = '';
// $altSignUp = ($num_sonntag >= $max_sonntag); //case 1&2 change it again
$altSignUp = ($num_jugendb >= $max_jugendb || $num_jugenda >= $max_jugenda || $num_dklasse >= $max_dklasse);
switch ($_POST['turnierklasse']) {
case 1:
$turnierklasse = 'Jugend U18 B';
$turnierklassestr = 'Jugend U18 B mit QTTR von 0 bis 1150 - Turniertag 1 - Samstag 12. September 2020';
$startgeld = '10€';
$vorkasse = '9€';
$altSignUp = ($num_jugendb >= $max_jugendb);
break;
case 2:
$turnierklasse = 'Jugend U18 A';
$turnierklassestr = 'Jugend U18 A mit QTTR von 1050 bis 3000 - Turniertag 1 - Samstag 12. September 2020';
$startgeld = '10€';
$vorkasse = '9€';
$altSignUp = ($num_jugenda >= $max_jugenda);
break;
case 3:
$turnierklasse = 'Aktive D';
$turnierklassestr = 'Aktive D mit QTTR von 0 bis 1350 - Turniertag 1 - Samstag 12. September 2020';
$startgeld = '12€';
$vorkasse = '11€';
$altSignUp = ($num_dklasse >= $max_dklasse);
break;
}
if (mysqli_fetch_object(mysqli_query($mysqli, 'SELECT * FROM `anmeldungen_2019_samstag` WHERE `vorname` = \'' . mysqli_real_escape_string($mysqli, $_POST['vorname']) . '\' AND `nachname` = \'' . mysqli_real_escape_string($mysqli, $_POST['nachname']) . '\' LIMIT 1'))) {
?><p><span class="rot"><b>Die Anmeldung ist Fehlgeschlagen!<br/>Die von dir angegebene Person <?php
echo $_POST['vorname'] . ' ' . $_POST['nachname'];
?> ist bereits angemeldet.</b></span></p>
<p>Falls dem nicht so seien sollte, kontaktiere uns bitte via E-Mail!</p>
</p><?php
$show_form = false;
} else { //eintragen
$mysqli_query = '
INSERT INTO `anmeldungen_2019_samstag`
(`vorname`, `nachname`, `geschlecht`, `geburtsjahr`, `ttr`, `email`, `verein`, `gemeldeteKlasse`, `anmerkung`, `timestamp`)
VALUES
(\'' . mysqli_real_escape_string($mysqli, $_POST['vorname']) . '\', \'' . mysqli_real_escape_string($mysqli, $_POST['nachname']) . '\', \'' . mysqli_real_escape_string($mysqli, $_POST['geschlecht']) . '\', \'' . mysqli_real_escape_string($mysqli, $_POST['geburtsjahr']) . '\', \'' . mysqli_real_escape_string($mysqli, $_POST['ttr']) . '\', \'' . mysqli_real_escape_string($mysqli, $_POST['email']) . '\', \'' . mysqli_real_escape_string($mysqli, $_POST['verein']) . '\', \'' . $_POST['turnierklasse'] . '\', \'' . mysqli_real_escape_string($mysqli, $_POST['eintrag']) . '\', NOW())';
if (mysqli_query($mysqli, $mysqli_query)) { //Bestätigungsemail an den Anmeldenden
$mail = new PHPMailer;
include("mail-zugang-smtp.php.inc");
//Betreff in der E-Mail ermitteln, je nach Teilnehmeranzahl
$subject = 'Bestätigung der Anmeldung zum PPC 23';
if ($altSignUp)
$subject = 'Warteliste - PPC 23';
//Zeit ermittelt an dem das Formular ausgefüllt wurde
$today_Wochentag = date('l');
$today_Datum = date('d.m.Y');
$today_Uhrzeit = date('H:i');
$t = date('w');
$wochentage = array(
'Sonntag',
'Montag',
'Dienstag',
'Mittwoch',
'Donnerstag',
'Freitag',
'Samstag'
);
$wochentag = $wochentage[$t];
//Anmeldung oder Anfrage ausgegeben, je nach Teilnehmeranzahl
$anmeldung_oder_warteliste = 'Anmeldung';
if ($altSignUp)
$anmeldung_oder_warteliste = 'Anfrage';
$text = "
Hallo {$_POST['vorname']} {$_POST['nachname']},<br />
Text .....
Vielen Dank!<br />
";
if ($altSignUp)
$text = "
Hallo {$_POST['vorname']} {$_POST['nachname']},<br />
Text....";
//UTF-8 Kodierung festlegen
$mail->CharSet = "utf-8";
//Absenderadresse der Email setzen
$mail->setFrom("zensiert");
$mail->addReplyTo("zensiert");
//Name des Abenders setzen
$mail->FromName = ("Zensiert");
//Empfängeradresse setzen
$mail->AddAddress($_POST['email']);
//möglicher Empfänger einer Kopie setzen
$mail->AddCC($_POST['email_alt']);
// html
$mail->isHTML(true);
//Betreff der Email setzen
$mail->Subject = $subject;
//Text der EMail setzen
$mail->Body = $text;
//EMail senden und überprüfen ob sie versandt wurde
if (!$mail->Send()) {
//$mail->Send() liefert FALSE zurück: Es ist ein Fehler aufgetreten
echo "Es gab bei der übermittelung der Daten ein kleines Problem. Bitte wiederhole den Vorgang oder kontaktiere uns bitte via E-Mail";
echo "Fehler: " . $mail->ErrorInfo;
} else {
//$mail->Send() liefert TRUE zurück: Die Email ist unterwegs
echo "<br />Eine Bestätigung deiner Anmeldung/Anfrage ist soeben an dich gesendet worden.";
} { //Mail an die Turnierleitung
$mail = new PHPMailer;
include("mail-zugang-smtp.php.inc");
//Betreff in der E-Mail ermitteln, je nach Teilnehmeranzahl
$subject = 'Neue Anmeldung zum PPC 23';
if ($altSignUp)
$subject = 'Warteliste - Neue Anfrage';
//Zeit ermittelt an dem das Formular ausgefüllt wurde
$today_Wochentag = date('l');
$today_Datum = date('d.m.Y');
$today_Uhrzeit = date('H:i');
$t = date('w');
$wochentage = array(
'Sonntag',
'Montag',
'Dienstag',
'Mittwoch',
'Donnerstag',
'Freitag',
'Samstag'
);
$wochentag = $wochentage[$t];
//Anmeldung oder Anfrage ausgegeben, je nach Teilnehmeranzahl
$anmeldung_oder_warteliste = 'Anmeldung';
if ($altSignUp)
$anmeldung_oder_warteliste = 'Anfrage';
$text = " ANMELDUNG!!!<br />
<br />
Hallo Turnierleitung,<br />
Text...
Mit sportlichen Grüßen<br />
{$_POST['vorname']} {$_POST['nachname']}
";
if ($altSignUp)
$text = " WARTELISTE!!!<br />
<br />
Hallo Turnierleitung,<br />
Text ...
Mit sportlichen Grüßen<br />
{$_POST['vorname']} {$_POST['nachname']}
";
//UTF-8 Kodierung festlegen
$mail->CharSet = "utf-8";
//Absenderadresse der Email setzen
$mail->setFrom("zenisert");
$mail->addReplyTo($_POST['email']);
//Name des Abenders setzen
$mail->FromName = ($_POST['vorname'] . ' ' . $_POST['nachname']);
// $mail->FromName = ("Turnierportal");
//Empfängeradresse setzen
$mail->AddAddress("zensiert");
// html
$mail->isHTML(true);
//Betreff der Email setzen
$mail->Subject = $subject;
//Text der EMail setzen
$mail->Body = $text;
//EMail senden und überprüfen ob sie versandt wurde
if (!$mail->Send()) {
//$mail->Send() liefert FALSE zurück: Es ist ein Fehler aufgetreten
echo "Es gab bei der übermittelung der Daten ein kleines Problem. Bitte wiederhole den Vorgang oder kontaktiere uns bitte via E-Mail";
echo "Fehler: " . $mail->ErrorInfo;
} else {
//$mail->Send() liefert TRUE zurück: Die Email ist unterwegs
echo "<br />Die Anmeldung/Anfrage ist an die Turnierleitung übermittelt worden.";
}
// $show_form=true;
}
} else {
die('<b>MySQL Error:</b><div class="rot">' . mysqli_error($mysqli) . '</div><br/>');
$show_form = true;
}
}
}
if ($show_form) //zeige Formular
{ //führt das aus, wenn die mail adresse noch ned angegeben wurde oder sonst wie das Formular nicht stimmt.
//ausgabe bzw. setzen von "turnierklasse" vereinfachen
//Formular für Zusatzangaben wie E-Mail-Adresse, Mitteilung, etc.
?>
<h1>Anmeldung: Turniertag 1, Samstag 12.09.2020</h1>
<p>Bitte alle mit einem * versehenen Felder ausfüllen.<br />
Die Teilnahme ist grundsätzlich nur in einem Wettbewerb möglich und auch nur in dem Wettbewerb, in welchem der Q-TTR passt.<br />
Die Angabe der E-Mail-Adresse ist von Nöten, da wir an diese Adresse die Bestätigungsemail verschicken.</p>
<form name="blub" method="post" action="anmeldung-samstag.php">
<p><label for="vorname">Vorname*:</label><br />
<input name="vorname" type="text" id="vorname" size="70" maxlength="50" class="eingabe" value="<?php
echo ($_POST['vorname'] . '"/>' . $frm_error['vorname']);
?></p>
<p><label for="nachname">Nachname*:</label><br />
<input name="nachname" type="text" id="nachanme" size="70" maxlength="50" class="eingabe" value="<?php
echo ($_POST['nachname'] . '"/>' . $frm_error['nachname']);
?></p>
<p>Geschlecht*:<br />
<select name="geschlecht"><option value="1">Bitte auswählen</option><option value="M"<?php
echo (($_POST['geschlecht'] == 'M' ? ' selected="selected"' : ''));
?>>männlich</option><option value="W"<?php
echo (($_POST['geschlecht'] == 'W' ? ' selected="selected"' : ''));
?>>weiblich</option></select><?php
echo $frm_error['geschlecht'];
?> </p>
<p><label for="ttr">(Q-)TTR (11.08.2020)*:</label><br />
<input name="ttr" type="text" id="ttr" size="70" maxlength="50" class="eingabe" value="<?php
echo ($_POST['ttr'] . '"/>' . $frm_error['ttr']);
?><p/>
<p>Turnierklasse*:<br />
<select name="turnierklasse">
<option>Bitte auswählen</option>
<?php
/*Samstag*/
$sunfull_jugendb = ($num_jugendb >= $max_jugendb ? 'full' : 'gruen');
$sunfull_jugenda = ($num_jugenda >= $max_jugenda ? 'full' : 'gruen');
$sunfull_dklasse = ($num_dklasse >= $max_dklasse ? 'full' : 'gruen');
?>
<option value="1" class="<?php
echo $sunfull_jugendb;
?>"
<?php
echo ($_POST['turnierklasse'] == 1 ? ' selected="selected"' : '');
?>
>Jugend U18 B mit QTTR von 0 bis 1150 - Turniertag 1 - Samstag 12. September 2020</option>
<option value="2" class="<?php
echo $sunfull_jugenda;
?>"
<?php
echo ($_POST['turnierklasse'] == 2 ? ' selected="selected"' : '');
?>
>Jugend U18 A mit QTTR von 1050 bis 3000 - Turniertag 1 - Samstag 12. September 2020</option>
<option value="3" class="<?php
echo $sunfull_dklasse;
?>"
<?php
echo ($_POST['turnierklasse'] == 3 ? ' selected="selected"' : '');
?>
>Aktive D mit QTTR von 0 bis 1350 - Turniertag 1 - Samstag 12. September 2020</option>
</select><?php
echo $frm_error['turnierklasse'];
?>
<br />
<?php
if (in_array('full', array(
$sunfull_jugendb,
$sunfull_jugenda,
$sunfull_dklasse
))) {
?><colspan="2" class="rot" style="text-align:center;font-size:80%;">Hinweis:<br />eine oder mehrere Turnierklassen sind derzeit belegt.<br />Eine Anfrage für die gewünschte Turnierklasse ist dennoch möglich!<?php
}
?> <p/>
<p><label for="email">E-Mail*:</label><br />
<input name="email" type="text" id="email" size="70" maxlength="50" class="eingabe" value="<?php
echo ($_POST['email'] . '"/>' . $frm_error['email']);
?></p>
<p><label for="geburtsjahr">Geburtsjahr*:</label><br />
<input name="geburtsjahr" type="text" id="geburtsjahr" size="70" maxlength="50" class="eingabe" value="<?php
echo ($_POST['geburtsjahr'] . '"/>' . $frm_error['geburtsjahr']);
?></p>
<p><label for="verein">Verein:*</label><br />
<input name="verein" type="text" id="verein" size="70" maxlength="50" class="eingabe" value="<?php
echo ($_POST['verein'] . '"/>' . $frm_error['verein']);
?></p>
<p><label for="email">Anmerkung:</label><br />
<textarea name="eintrag" cols="65" rows="7" id="eintrag" class="eingabe"><?php
echo ($_POST['eintrag']);
?></textarea><p/>
<p>Falls gewünscht, kann hier eine weitere E-Mail-Adresse angegeben werden, welche dann ebenfalls eine Kopie der Anmeldung/Anfrage erhält.<br />
<label for="email_alt">E-Mail 2 (optional):</label><br />
<input name="email_alt" type="text" id="email_alt" size="70" maxlength="50" class="eingabe" value="<?php
echo ($_POST['email_alt'] . '"/>' . $frm_error['email_alt']);
?></p>
<p><input type="checkbox" name="Verarbeitung_Bestaetigung" value="Ja">Mit der Nutzung dieses Formulars erklärst du dich mit der Speicherung und Verarbeitung deiner Daten durch diese Website einverstanden</p>
<p><input type="checkbox" name="Turnierinfos_Bestaetigung" value="Ja">Ebenso die Erlaubnis, dir Informationen rund um das Turnier via E-Mail zukommen zu lassen.</p>
<p><input type="checkbox" name="Datenschutz_Bestaetigung" value="Ja"><a href="datenschutz.php" target="_blank">Datenschutz</a> gelesen und akzeptieren</p>
<p><input type="submit" value="Anmeldung abschließen"/></form></p><?php
}
?>
<div class="clear"></div>
</div>
<!-- Ende Linker Inhalt -->
<?php
//include des rechten Bereiches
include("include/rechter-inhalt.php");
//include Ende des ganzen Inhaltes
include("include/ende-ganzer-inhalt.php");
//include Fuss
include("include/fuss.php");
//include Ende
include("include/ende.php");
?>
Checkboxen:
<p><input type="checkbox" name="Verarbeitung_Bestaetigung" value="Ja">Mit der Nutzung dieses Formulars erklärst du dich mit der Speicherung und Verarbeitung deiner Daten durch diese Website einverstanden</p>
<p><input type="checkbox" name="Turnierinfos_Bestaetigung" value="Ja">Ebenso die Erlaubnis, dir Informationen rund um das Turnier via E-Mail zukommen zu lassen.</p>
<p><input type="checkbox" name="Datenschutz_Bestaetigung" value="Ja"><a href="datenschutz.php" target="_blank">Datenschutz</a> gelesen und akzeptieren</p>
<p><input type="submit" value="Anmeldung abschließen"/></form></p><?php
}
?>
Überprüfung:
Die habe ich an diversen Stellen im Script platziert, ohne Erfolg.
<?php
$checkbox_counter = 0; //Dieser Counter zählt die gesetzten Häkchen. 3 müssen es sein - sind es weniger wird unten die checkbox_nachricht ausgegeben
if ($_POST['Verarbeitung_Bestaetigung'] != 'Ja')
{
$checkbox_nachricht = 'Du musst der Speicherung und Verarbeitung deiner Daten zustimmen.';
}
else
{
$checkbox_counter++;
}
if ($_POST['Turnierinfos_Bestaetigung'] != 'Ja')
{
$checkbox_nachricht = $checkbox_nachricht.' Du musst uns erlauben, dir Infos für das Turnier zu senden.';
}
else
{
$checkbox_counter++;
}
if ($_POST['Datenschutz_Bestaetigung'] != 'Ja')
{
$checkbox_nachricht = $checkbox_nachricht.' Du musst die Datenschutz-Erklärung akzeptieren.';
}
else
{
$checkbox_counter++;
}
if ($checkbox_counter = 3)
{
//alle Häkchen gesetzt, alles gut. Hier käme dann der Versand oder was auch immer rein...
}
else
{
echo $checkbox_nachricht;
}
?>
Ist da irgendwo ein Fehler drin?
Müßte ich dies anderst lösen?
Wo genau muß der Einbau erfolgen?