Zur Navigation

Checkbox prüfen

1 tobi

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.

<?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?

17.03.2020 06:47 | geändert: 17.03.2020 06:48

2 Jörg Kruse

if ($checkbox_counter = 3)

Ein einzelnes Gleichheitszeichen hat die Funktion einer Zuordnung: der Variable $checkbox_counter wird der Wert 3 zugewiesen. Die if Konstruktion prüft dann nur noch darauf, ob 3 true entspricht, was bei allen Zahlen ungleich Null der Fall ist. Der folgende Block wird also immer ausgeführt.

Wenn du überprüfen möchtest, ob $checkbox_counter gleich 3 ist, dann musst du ein doppeltes Gleichheitszeichen verwenden:

if ($checkbox_counter == 3)

17.03.2020 09:42 | geändert: 17.03.2020 09:43

3 tobi

Fehlermeldungen die hier auftauchen:
Notice: Undefined index: Verarbeitung_Bestaetigung
Notice: Undefined index: Turnierinfos_Bestaetigung
Notice: Undefined index: Datenschutz_Bestaetigung

...
    <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>

<?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;
	}

?>

                                                                          
<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");
?>

17.03.2020 10:50

4 Jörg Kruse

Wenn eine Checkbox nicht ausgewählt wird, dann wird der betreffende Parameter überhaupt nicht übertragen, $_POST['Verarbeitung_Bestaetigung'] ist dann also nicht existent. Deswegen überprüft man bei Checkboxen besser, ob die betreffende Variable (nicht) leer ist:

if (!empty($_POST['Verarbeitung_Bestaetigung']))

17.03.2020 11:29

5 tobi

Ich habe jetzt versucht es mal so einzubinden wie ich denke, dass es im Script platziert sein müßte (fett markiert). Kann dies so stimmen? Glaube nicht ganz, oder?
Bevor in der Datenbank gespeichert und die Mails gesendet werden dürfen, müssen die Hacken gesetzt sein.

<?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

$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 (!empty($_POST['Verarbeitung_Bestaetigung']))
    { 
		$checkbox_nachricht = 'Du musst der Speicherung und Verarbeitung deiner Daten zustimmen.';
	}
	else
	{
		$checkbox_counter++;
	}
if (!empty($_POST['Turnierinfos_Bestaetigung']))
	{ 
		$checkbox_nachricht = $checkbox_nachricht.' Du musst uns erlauben, dich zuzuspammen.';
	}
	else
	{
		$checkbox_counter++;
	}
if (!empty($_POST['Datenschutz_Bestaetigung']))
	{ 
		$checkbox_nachricht = $checkbox_nachricht.' Du musst die Datenschutz-Foo 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... 

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>
                                                                          
<?php
	}
	else
	{
		echo $checkbox_nachricht;
	}

?>

                                                                          
<p><input type="checkbox" id="Verarbeitung_Bestaetigung" 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" id="Turnierinfos_Bestaetigung" 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" id="Datenschutz_Bestaetigung"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");
?>

19.03.2020 06:45 | geändert: 19.03.2020 06:54

6 Jörg Kruse

Naja, könnte sein - idealerweise wird der Code so eingerückt, dass leichter erkennbar ist, ob die Klammern korrekt gesetzt sind. Ansonsten einfach mal testen.

Zusätzlich könnten die Checkboxen auch noch mit dem required Attribut versehen werden, so dass ein HTML5-fähige Browser bereits beim Absenden meckert, wenn die betreffende Checkbox nicht markiert wurde.

<input type="checkbox" name="Verarbeitung_Bestaetigung" value="Ja" required>

19.03.2020 18:53

7 tobi

Szenario 1:
Wenn ich die Datei nun aufrufe und nichts eintrage und auf absenden klicke, dann tauchen bei meinen Feldern überall die Fehlermeldungen auf, dass nichts eingetragen oder ausgewählt wurde.
Bei den Checkboxen taucht keine Meldung auf.

Szenario 2:
Fülle ich meine Felder aus und lasse die Checkboxen unberührt, kommt
Anmeldung fehlgeschlagen da die Person die ich anmelden wollte, schon in der Datenbank ist (ist korrekt so).

Desweiteren taucht:
Notice: Undefined variable: checkbox_nachricht
Und die Checkbox sowie der Anmelde Button sind zu sehen.

Szenario 3:
Fülle ich meine Felder aus und lasse die Checkboxen unberührt, kommt
Eine Bestätigung deiner Anmeldung/Anfrage ist soeben an dich gesendet worden.
Die Anmeldung/Anfrage ist an die Turnierleitung übermittelt worden. (ist korrekt so).

Desweiteren taucht:
Notice: Undefined variable: checkbox_nachricht
Und die Checkbox sowie der Anmelde Button sind zu sehen.

Szenario 4:
Fülle ich meine Felder aus und mache ein Kreuz in der 1. Checkbox und die anderen beiden Checkboxen bekommen kein Kreuz, taucht nach absenden eine leere Seite auf.

Szenario 5:
Fülle ich meine Felder aus und mache ein Kreuz in der 2. Checkbox und die anderen beiden Checkboxen bekommen kein Kreuz, taucht nach absenden Notice: Undefined variable: checkbox_nachricht

Szenario 6:
Fülle ich meine Felder aus und mache ein Kreuz in der 3. Checkbox und die anderen beiden Checkboxen bekommen kein Kreuz, taucht nach absenden Notice: Undefined variable: checkbox_nachricht

Szenario 7:
Fülle ich meine Felder aus und mache ein Kreuz in der 2. und 3. Checkbox und die andere Checkboxen bekommt kein Kreuz, taucht nach absenden Notice: Undefined variable: checkbox_nachricht

Szenario 8:
Fülle ich meine Felder aus und mache ein Kreuz in der 1. und 3. Checkbox und die andere Checkboxen bekommt kein Kreuz, taucht nach absenden eine leere Seite auf.

Szenario 9:
Fülle ich meine Felder aus und mache ein Kreuz in der 1. und 2. Checkbox und die andere Checkboxen bekommt kein Kreuz, taucht nach absenden eine leere Seite auf.

Szenario 9:
Fülle ich meine Felder aus und mache ein Kreuz in allen 3 Checkboxen taucht nach absenden eine leere Seite auf.

25.03.2020 07:02

8 Jörg Kruse

Die Prüfung der Checkboxen gehört mit in den Block, wo auch die Prüfung der andern POST-Parameter stattfindet:

if (isset($_POST['email'])) { ... }

Dabei musst du die Logik der Prüfung entsprechend entsprechend anpassen, also z.B. im Fehlerfall $show_form als true setzen:

if ($checkbox_counter == 3) {
     $show_form = true;
}

Die Checkboxen selbst gehören mit in das Formular, also innerhalb dieses Blocks:

if ($show_form) { ... }

25.03.2020 11:30

9 tobi

hier bekomme ich nun beim absenden immer eine leere Seite.

...
<?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] = '';
        }
    }
$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 (!empty($_POST['Verarbeitung_Bestaetigung']))
    { 
        $checkbox_nachricht = 'Du musst der Speicherung und Verarbeitung deiner Daten zustimmen.';
    }
	else
	{
		$checkbox_counter++;
	}
if (!empty($_POST['Turnierinfos_Bestaetigung']))
	{ 
		$checkbox_nachricht = $checkbox_nachricht.' Du musst uns erlauben, dich zuzuspammen.';
	}
	else
	{
		$checkbox_counter++;
	}
if (!empty($_POST['Datenschutz_Bestaetigung']))
	{ 
		$checkbox_nachricht = $checkbox_nachricht.' Du musst die Datenschutz-Foo 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...     
    
    $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 />
                <br />
                am {$wochentage[$t]} den {$today_Datum} um {$today_Uhrzeit} Uhr ist deine {$anmeldung_oder_warteliste} bei uns eingegangen.<br />
                <br />
                An die Turnierleitung wurden folgende Angaben übermittelt:<br />
                Vorname: {$_POST['vorname']}<br />
                Nachname: {$_POST['nachname']}<br />
                Geschlecht: {$_POST['geschlecht']}<br />
                Kontakt-E-Mail: {$_POST['email']}<br />
                (Q-)TTR (11.08.2020): {$_POST['ttr']}<br />
                Angemeldete Turnierklasse samt Turniertag: " . $turnierklassestr . (intval($_POST['turnierklasse_ex']) ? ' (freiwillig eine Klasse höher)' : '') . "<br />
                <br />
                Verein: {$_POST['verein']}<br />            
                Startgebühr: {$startgeld}<br />
                Vorkasse: {$vorkasse}<br />
                <br />
                Für eine schnellere Abwicklung beim Turnier gibt es die Möglichkeit per Vorkasse bis zum 10.09.2020 (Geldeingang) die Startgebühr zu überweisen.<br />
                Kontodaten:<br />
                
                ";
            if ($altSignUp)
                $text = "    
                                            Hallo {$_POST['vorname']} {$_POST['nachname']},<br />
                                            <br />
                                            am {$wochentage[$t]} den {$today_Datum} um {$today_Uhrzeit} Uhr ist deine {$anmeldung_oder_warteliste} bei uns eingegangen. Dies ist keine Turnierbestätigung!<br />
                                            <br />Aktuell ist die Teilnehmergrenze in deinem gemeldeten Wettbewerb überschritten und wir können deshalb deine Anfrage aktuell leider noch nicht bestätigen. Erfahrungsgemäß sagen aber kurz vor Turnierbeginn noch der eine oder andere Spieler/in ab. In einem solchen Fall würden wir dann umgehend mit dir Kontakt aufnehmen.<br />
                                            <br />
                                            An die Turnierleitung wurden vorab aber schon mal folgende Angaben übermittelt:<br />
                                            Vorname: {$_POST['vorname']}<br />
                                            Nachname: {$_POST['nachname']}<br />
                                            Geschlecht: {$_POST['geschlecht']}<br />
                                            Kontakt-E-Mail: {$_POST['email']}<br />
                                            (Q-)TTR (11.08.2020): {$_POST['ttr']}<br />
                                            Turnierklasse samt Turniertag: " . $turnierklassestr . (intval($_POST['turnierklasse_ex']) ? ' (freiwillig eine Klasse höher)' : '') . "<br />
                                            Verein: {$_POST['verein']}<br />
                                            <br />
                                            Vielen Dank!<br />
                                            <br />
                                            Mit sportlichen Grüßen<br />
                                            ";
            
            //UTF-8 Kodierung festlegen
            $mail->CharSet = "utf-8";
            
            //Absenderadresse der Email setzen
            $mail->setFrom("");
            $mail->addReplyTo("");
            
            //Name des Abenders setzen
            $mail->FromName = ("");
            
            //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 />
                <br />
                am {$wochentage[$t]} den {$today_Datum} um {$today_Uhrzeit} Uhr ist eine neue Anmeldung eingegangen.<br />
                <br />
                Hier die Angaben des Spielers/der Spielerin:<br />
                Vorname: {$_POST['vorname']}<br />
                Nachname: {$_POST['nachname']}<br />
                Geschlecht: {$_POST['geschlecht']}<br />
                Kontakt-E-Mail: {$_POST['email']}<br />
                E-Mail 2: {$_POST['email_alt']}<br />
                (Q-)TTR (11.08.2020): {$_POST['ttr']}<br />
                Turnierklasse samt Turniertag: " . $turnierklassestr . (intval($_POST['turnierklasse_ex']) ? ' (freiwillig eine Klasse höher)' : '') . "<br />
                Geburtsjahr: {$_POST['geburtsjahr']}<br />
                Verein: {$_POST['verein']}<br />
                Anmerkung: {$_POST['eintrag']}<br />
                <br />
                Mit sportlichen Grüßen<br />
                {$_POST['vorname']} {$_POST['nachname']}
                ";
                if ($altSignUp)
                    $text = "    WARTELISTE!!!<br />
                                            <br />
                                            Hallo Turnierleitung,<br />
                                            <br />
                                            am {$wochentage[$t]} den {$today_Datum} um {$today_Uhrzeit} Uhr ist eine neue Anfrage eingegangen.<br />
                                            <br />
                                            Hier die Angaben des Spielers/der Spielerin:<br />
                                            Vorname: {$_POST['vorname']}<br />
                                            Nachname: {$_POST['nachname']}<br />
                                            Geschlecht: {$_POST['geschlecht']}<br />
                                            Kontakt-E-Mail: {$_POST['email']}<br />
                                            E-Mail 2: {$_POST['email_alt']}<br />
                                            (Q-)TTR (11.08.2020): {$_POST['ttr']}<br />
                                            Turnierklasse samt Turniertag: " . $turnierklassestr . (intval($_POST['turnierklasse_ex']) ? ' (freiwillig eine Klasse höher)' : '') . "<br />
                                            Geburtsjahr: {$_POST['geburtsjahr']}<br />
                                            Verein: {$_POST['verein']}<br />
                                            Anmerkung: {$_POST['eintrag']}<br />
                                            <br />
                                            Mit sportlichen Grüßen<br />
                                            {$_POST['vorname']} {$_POST['nachname']}
                                            ";
                
                //UTF-8 Kodierung festlegen
                $mail->CharSet = "utf-8";
                
                //Absenderadresse der Email setzen
                $mail->setFrom("e");
                //                $mail->addReplyTo("leer@leer.de");
                $mail->addReplyTo($_POST['email']);
                
                
                //Name des Abenders setzen
                $mail->FromName = ($_POST['vorname'] . ' ' . $_POST['nachname']);
                //                $mail->FromName = ("Turnierportal");
                
                //Empfängeradresse setzen
                $mail->AddAddress("");
                
                //nur aktiv wenn getestet wird!!!
                //                                $mail->AddAddress("");
                
                // 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="test2-anmeldung.php">
<p><label for="vorname">Vorname*:</label> 
<input name="vorname" type="text" id="vorname" size="45" maxlength="50" placeholder=" Max" class="eingabe" value="<?php
    echo ($_POST['vorname'] . '"/>' . $frm_error['vorname']);
?></p>
<p><label for="nachname">Nachname*:</label>
<input name="nachname" type="text" id="nachanme" size="45" maxlength="50" placeholder=" Mustermann" class="eingabe" value="<?php
    echo ($_POST['nachname'] . '"/>' . $frm_error['nachname']);
?></p>              
<p>Geschlecht*:
<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="email">E-Mail*:</label>
 <input name="email" type="text" id="email" size="45" maxlength="50" placeholder=" test@example.com" class="eingabe" value="<?php
    echo ($_POST['email'] . '"/>' . $frm_error['email']);
?></p>
 <p><label for="geburtsjahr">Geburtsjahr*:</label>
<input name="geburtsjahr" type="text" id="geburtsjahr" size="7" maxlength="50" placeholder=" z.B. 1967" class="eingabe" value="<?php
    echo ($_POST['geburtsjahr'] . '"/>' . $frm_error['geburtsjahr']);
?></p>
  <p><label for="verein">Verein:*</label>
   <input name="verein" type="text" id="verein" size="45" maxlength="50" placeholder=" TTC Musterhausen" class="eingabe" value="<?php
    echo ($_POST['verein'] . '"/>' . $frm_error['verein']);
?></p>
 <p><label for="ttr">(Q-)TTR (11.08.2020)*:</label>
<input name="ttr" type="text" id="ttr" size="7" maxlength="50" placeholder=" z.B. 1000" 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">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="45" maxlength="50" class="eingabe" value="<?php
    echo ($_POST['email_alt'] . '"/>' . $frm_error['email_alt']);
?></p>
                                                                          

<?php
	}
	else
	{
		echo $checkbox_nachricht;
	}

?>

                                                                          
<p><input type="checkbox" id="Verarbeitung_Bestaetigung" 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" id="Turnierinfos_Bestaetigung" 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" id="Datenschutz_Bestaetigung"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 -->
...

25.03.2020 12:27

10 Jörg Kruse

Die Checkbox-Prüfungen sollten in den if, nicht in den else Block. Es soll ja geprüft werden, wenn das Formular abgesendet wurde, also wenn die Bedingung (isset($_POST['email'])) erfüllt ist.

Abgesehen davon würde ich empfehlen, den PHP-Code als erstes sauber einzurücken, das ist an einigen Stellen nämlich nicht der Fall. Falls dein Editor keine solche Funktion anbietet, gibt es hierzu auch Online-PHP-Formatter bzw. -Beautifier. Danach kann man leichter erkennen, ob die Klammern korrekt gesetzt sind bzw. wie sie anders gesetzt werden sollten.

25.03.2020 16:50 | geändert: 25.03.2020 16:54