0
0
Fork 0
easterhegg-2009-website/anmeldung.php

613 lines
22 KiB
PHP
Raw Normal View History

2024-01-27 15:16:42 +01:00
<?php
// diese Seite stellt die Anmeldefunktion f<>r die Easterhegg-Seite zur Verf<72>gung
// + diese Seite liegt im <20>ffentlichen Serverbereich, dieser darf *.php nicht als plain/text ausliefern ;)
// + diese Seite verlangt zwingend https
/*
Struktur dieser Seite:
+ write HTTP header
+ recall session
+ check, defuse and shorten input variables
+ Pr<EFBFBD>fung auf https
= OK => continue
= FAIL => Session-Zwangslogout, Abbruchmeldung und Schlu<EFBFBD>verarbeitung
+ Pr<EFBFBD>fung auf Wartungsstatus
= OK => continue
= FAIL => Abbruchmeldung und Schlu<EFBFBD>verarbeitung
+ Verarbeitung der Submit-Aktionen (POST), Anzeige des Anmeldeformulars
*/
// this script needs following additional server modules for PHP
// (none)
// write HTTP header (anti-cache)
header('Expires: Sun, 31 Dec 1989 23:59:59 GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0');
header('Pragma: no-cache');
// recall session
session_cache_limiter('nocache');
session_cache_expire(1);
session_start();
//deactivate automatic use of addslashes
// set_magic_quotes_runtime(0);
// define general server constants
define( "SERVER_SITE_MAINTENANCE", true ); // maintenance state, set to TRUE to lock this page temporarily
define( "ANMELDUNG_GESAMT_MAXCOUNT", 330 ); // state of Angel registration, set to FALSE if enough Angels have been registered
define( "ANMELDUNG_ENGEL_MAXCOUNT", 35 ); // state of Angel registration, set to FALSE if enough Angels have been registered
define( "ANMELDUNG_GUELTIGKEIT_JAHR", 2009 ); // state of Angel registration, set to FALSE if enough Angels have been registered
define( "SERVER_LOCALHOST_IP", "127.0.0.1" ); // localhost IP, which does not need authentication
// define server file constants
define( "SERVER_FILE_TEMPLATE", "template.shtml" ); // template file
define( "SERVER_FILE_HEADER", "ssi_site_header.html" ); // SSI file for site header
define( "SERVER_FILE_INTRO", "ssi_site_intro.html" ); // SSI file for site intro
define( "SERVER_FILE_EXTRO", "ssi_site_extro.html" ); // SSI file for site extro
define( "SERVER_FILE_AUTOGEN", "ssi_site_autogen.html" ); // SSI file for site autogeneration warning
define( "SERVER_FILE_ANMELDUNGSLISTE", "anmeldung-data/anmeldung.csv" ); // path and file for registered participants
define( "SERVER_FILE_MAILINGLISTENLISTE", "anmeldung-data/mailingliste.txt" ); // path and file for mailinglist applicants
// define display constants
define( "DISPLAY_TEXT_NONE", " " );
define( "DISPLAY_VALUE_SEPARATOR", chr(9));
// init instance variables
$eintritt = array ( 'Normal' => 42,
'Mitglied' => 35,
'Engel' => 35,
'Ermaeszigt' => 35 );
$intnow = time();
$strmsg = ''; // (status/error/etc.) message to user
$bolauthabort = false; // auth check will be aborted: show auth warning
$intgesamtcount = 0;
$intengelcount = 0;
$strnomailconfirmation = '';
$bolok = true; // action feedback, triggers confirmation if true or warning if false
$strgarmentsizelist = array ('4XS', '3XS', 'XXS', 'XS', 'S', 'M', 'L', 'XL', 'XXL', '3XL', '4XL');
// function library
function addmsg ($straddmsg)
{
// adds $straddmsg to $strmsg
global $strmsg;
if ( $straddmsg != '' )
{
$strmsg = $strmsg . '<li>' . $straddmsg . '</li>';
}
}
function showmsg ()
{
// shows messages in $strmsg if available
global $strmsg, $bolok;
if ( $strmsg != '' )
{
echo'
<div class="announcement">
<h1 class="';
if ( $bolok )
{
echo 'confirmation';
}
else
{
echo 'warning';
}
echo '">Feedback</h1>
<ul>' . $strmsg . '</ul>
</div>';
$strmsg = '';
$bolok = false;
}
}
function selectcbovalue ( $strcbovaluelist, $strselectvalue )
{
// selects value with key $strselectvalue of $strcbovaluelist which has to be a valid-prepared option value list for drop-down-boxes
return str_replace(
'<option value="' . $strselectvalue . '">',
'<option value="' . $strselectvalue . '" selected="selected">',
$strcbovaluelist );
}
// prepare input variables in six steps
// 1. init internal variable, e.g.: $strparam = '';
// 2. execute step 3 up to 6 only if external variable exists, e.g.: if ( isset($_GET['txt_param']) )
// 3. convert to correct type, e.g.: $gstrparam = (string) $_GET['param'];
// 4. defuse dangerous content, e.g.: $gstrparam = trim( addslashes( htmlentities( urldecode( $gstrparam ), ENT_QUOTES )));
// 5. limit allowed size, e.g.: if ( strlen( $gstrparam ) > 255 ) $gstrparam = substr( $gstrparam, 0, 255 );
// 6. on demand evaluate content and overwrite respective internal variables, e.g. $strparam = $gstrparam;
$strfile = file_get_contents( constant("SERVER_FILE_ANMELDUNGSLISTE") );
$intgesamtcount = substr_count( $strfile, chr(10) ) - 1; // just count the lines, should be enough if nobody crapped the file
$intengelcount = substr_count( $strfile, chr(9) . "Engel" . chr(9) );
$strnick = '';
if ( isset($_POST['txt_nick']) )
{
$pstrnick = (string) $_POST['txt_nick'];
$pstrnick = str_replace( chr(13) . chr(10), '\n', $pstrnick );
$pstrnick = str_replace( chr(13), '\n', $pstrnick );
$pstrnick = str_replace( chr(10), '\n', $pstrnick );
$pstrnick = str_replace( chr(9), '\t', $pstrnick );
$pstrnick = trim( stripslashes( htmlentities( $pstrnick, ENT_QUOTES )));
if ( strlen( $pstrnick ) > 255 ) $pstrnick = substr( $pstrnick, 0, 255 );
$strnick = $pstrnick;
if ( $strnick == '' )
{
addmsg ( 'Bitte w&auml;hle einen Nickname, mit dem Du auf dem Easterhegg angesprochen werden m&ouml;chtest.' );
$bolok = false;
}
}
$stremail = '';
if ( isset($_POST['txt_email']) )
{
$pstremail = (string) $_POST['txt_email'];
$pstremail = str_replace( chr(13) . chr(10), '\n', $pstremail );
$pstremail = str_replace( chr(13), '\n', $pstremail );
$pstremail = str_replace( chr(10), '\n', $pstremail );
$pstremail = str_replace( chr(9), '\t', $pstremail );
$pstremail = trim( stripslashes( htmlentities( $pstremail, ENT_QUOTES )));
if ( strlen( $pstremail ) > 255 ) $pstremail = substr( $pstremail, 0, 255 );
$stremail = $pstremail;
}
$bolmailinglist = false;
if ( isset($_POST['chk_mailinglist']) )
{
$pbolmailinglist = (bool) $_POST['chk_mailinglist'];
$bolmailinglist = $pbolmailinglist;
if ( $bolmailinglist && $stremail == '' )
{
addmsg ( 'Wie willst Du denn bitte ohne Mailadresse auf die Mailingliste?<br />Magst Du bitte entweder das H&auml;kchen wieder entfernen oder eine g&uuml;ltige Mailadresse eingeben... Danke ;-)' );
$bolok = false;
}
}
$strstatus = 'Normal';
if ( isset($_POST['opt_status']) )
{
$pstrstatus = (string) $_POST['opt_status'];
$pstrstatus = trim( stripslashes( htmlentities( $pstrstatus, ENT_QUOTES )));
if ( strlen( $pstrstatus ) > 255 ) $pstrstatus = substr( $pstrstatus, 0, 255 );
$strstatus = $pstrstatus;
if ( $intengelcount >= constant( "ANMELDUNG_ENGEL_MAXCOUNT" ) )
{
// zus<75>tzliche Engelpr<70>fung, falls jemand die Sperre gehackt hat
if ( $strstatus == 'Engel' )
{
addmsg ( 'Eine Anmeldung als Engel ist nicht mehr m&ouml;glich.<br />Falls Du der Meinung bist, dass dies in Deinem speziellen Fall nicht klug ist, wende Dich bitte an die Organisatoren.' );
$strstatus = 'Hacker';
$bolok = false;
}
}
// validate -> sch<63>ner (und aufwendiger) w<>ren dynamische Arrays, aber das funktioniert auch so gut genug...
if ( $strstatus != 'Normal' && $strstatus != 'Mitglied' && $strstatus != 'Engel' && $strstatus != 'Ermaeszigt' )
{
$strstatus = 'Hacker';
}
// Look! Hacker ;-)
if ( $strstatus == 'Hacker' )
{
addmsg ( 'Aufgrund Deiner (fast) erfolgreichen Hackversuche gehen wir davon aus, dass Du bereits CCC-Mitglied bist. ;-)' );
$strstatus = 'Mitglied';
}
}
$strgarmentsize = '';
if ( isset($_POST['cbo_garmentsize']) )
{
$pstrgarmentsize = (string) $_POST['cbo_garmentsize'];
$pstrgarmentsize = str_replace( chr(13) . chr(10), '\n', $pstrgarmentsize );
$pstrgarmentsize = str_replace( chr(13), '\n', $pstrgarmentsize );
$pstrgarmentsize = str_replace( chr(10), '\n', $pstrgarmentsize );
$pstrgarmentsize = str_replace( chr(9), '\t', $pstrgarmentsize );
$pstrgarmentsize = trim( stripslashes( htmlentities( $pstrgarmentsize, ENT_QUOTES )));
if ( strlen( $pstrgarmentsize ) > 255 ) $pstrgarmentsize = substr( $pstrgarmentsize, 0, 255 );
$strgarmentsize = $pstrgarmentsize;
if ( $strgarmentsize != '' && $strstatus != 'Engel' )
{
addmsg ( 'Achtung: Wir reservieren Klamotten nur speziell f&uuml;r Engel.<br />Gem&auml;&szlig; den Prinzipien zur Vermeidung von Datenunrat haben wir Deine Konfektionsgr&ouml;&szlig;e daher nicht erfasst. ;-)' );
$strgarmentsize = '';
}
elseif ( $strgarmentsize == '' && $strstatus == 'Engel' )
{
addmsg ( 'Als Engel bitten wir dich, auch eine Konfektionsgr&ouml;&szlig;e anzugeben.' );
$bolok = false;
}
elseif ( $strgarmentsize != '' && !in_array( $strgarmentsize, $strgarmentsizelist, true ) )
{
addmsg ( 'Sag mal, wie machst Du das eigentlich sonst so mit Deinen Klamotten?<br />W&auml;hle doch bitte eine Konfektionsgr&ouml;&szlig;e, die andere auch kennen... ;-)' );
$bolok = false;
}
}
$intwurst = 0;
if ( isset($_POST['txt_wurst']) )
{
$pintwurst = (integer) $_POST['txt_wurst'];
if ( $pintwurst > 65535 ) $pintwurst = 0;
if ( $pintwurst >= 0 and $pintwurst <= 9 )
{
$intwurst = $pintwurst;
}
else
{
addmsg ( 'Bitte korrigiere die Anzahl der Wurstbr&ouml;tchen, eine einstellige Zahl sollte gen&uuml;gen. ;-)' );
$bolok = false;
}
}
$intkaese = 0;
if ( isset($_POST['txt_kaese']) )
{
$pintkaese = (integer) $_POST['txt_kaese'];
if ( $pintkaese > 65535 ) $pintkaese = 0;
if ( $pintkaese >= 0 and $pintkaese <= 9 )
{
$intkaese = $pintkaese;
}
else
{
addmsg ( 'Bitte korrigiere die Anzahl der K&auml;sebr&ouml;tchen, eine einstellige Zahl sollte gen&uuml;gen. ;-)' );
$bolok = false;
}
}
$intmarmelade = 0;
if ( isset($_POST['txt_marmelade']) )
{
$pintmarmelade = (integer) $_POST['txt_marmelade'];
if ( $pintmarmelade > 65535 ) $pintmarmelade = 0;
if ( $pintmarmelade >= 0 and $pintmarmelade <= 9 )
{
$intmarmelade = $pintmarmelade;
}
else
{
addmsg ( 'Bitte korrigiere die Anzahl der Marmeladenbr&ouml;tchen, eine einstellige Zahl sollte gen&uuml;gen. ;-)' );
$bolok = false;
}
}
$bolobst = false;
if ( isset($_POST['chk_obst']) )
{
$pbolobst = (bool) $_POST['chk_obst'];
$bolobst = $pbolobst;
}
$bolmuesli = false;
if ( isset($_POST['chk_muesli']) )
{
$pbolmuesli = (bool) $_POST['chk_muesli'];
$bolmuesli = $pbolmuesli;
}
$bolanmeldung = false;
if ( isset($_POST['cmd_anmeldung']) )
{
$pbolanmeldung = (bool) $_POST['cmd_anmeldung'];
$bolanmeldung = $pbolanmeldung;
}
$strserverremoteaddr = htmlspecialchars( $_SERVER['REMOTE_ADDR'], ENT_QUOTES );
if ( isset( $_SERVER['HTTP_X_FORWARDED_FOR'] )) $strserverremoteaddr = htmlspecialchars( $_SERVER['HTTP_X_FORWARDED_FOR'], ENT_QUOTES );
$strserverprotohttps = htmlspecialchars( $_SERVER['HTTPS'], ENT_QUOTES );
if ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] )) $strserverprotohttps = htmlspecialchars( $_SERVER['HTTP_X_FORWARDED_PROTO'], ENT_QUOTES );
// localhost darf immer
if ( $strserverremoteaddr != constant("SERVER_LOCALHOST_IP") )
{
// check protocol
// check secure connection
// possible results:
// - secure => continue
// - insecure => abort processing and show error message ($strmsg)
if ( strtolower( $strserverprotohttps ) != 'https' && strtolower( $strserverprotohttps ) != 'on' )
{
// insecure connection -> abort
addmsg ( '<a href="https://' . $_SERVER['HTTP_HOST'] . $_SERVER["PHP_SELF"] . '">Dein Verbindungsprotokoll ist HTTP. Bitte verwende f&uuml;r die Anmeldung Verschl&uuml;sselung mittels HTTPS.</a>' );
$bolauthabort = true;
$bolok = false;
}
}
// check maintenance state
if ( constant("SERVER_SITE_MAINTENANCE") )
{
// cancel because of maintenance
$strmsg = '';
addmsg ( 'Die Anmeldung ist zurzeit deaktiviert.' );
$bolok = false;
$bolauthabort = true;
}
if ( $intgesamtcount > constant("ANMELDUNG_GESAMT_MAXCOUNT") )
{
// cancel because of maintenance
$strmsg = '';
addmsg ( 'Die maximal geplante Teilnehmerzahl ist erreicht, wir werden jedoch niemanden abweisen.<br />User ohne Anmeldung m&uuml;ssen evtl. damit rechnen, keine Tasse zu erhalten.' );
$bolok = false;
$bolauthabort = true;
}
// prepare page
// assume that all SSI files are there. No, I won't check _that_ explicitely.
// If they ain't there, the user gets a partial page. ...so what? ;o)
readfile( constant("SERVER_FILE_HEADER") );
echo'
<!-- begin of specific page header -->
<title>Easterhegg ' . constant("ANMELDUNG_GUELTIGKEIT_JAHR") . ' - Anmeldung</title>
<!-- end of specific page header -->';
readfile( constant("SERVER_FILE_INTRO") );
echo'
<!-- begin of specific page content -->
';
echo
'
<h1><abbr title="Easter Hegg ' . constant("ANMELDUNG_GUELTIGKEIT_JAHR") . '">EH' . substr( constant("ANMELDUNG_GUELTIGKEIT_JAHR"), -2) . '</abbr>:<abbr title="Anmeldung">Anmeldung</abbr></h1>
<div id="main">
<h2>Anmeldung' . ( constant("SERVER_SITE_MAINTENANCE") ? '' : ' (noch ' . ( constant( "ANMELDUNG_GESAMT_MAXCOUNT" ) - $intgesamtcount ) . ' ' . (( constant( "ANMELDUNG_GESAMT_MAXCOUNT" ) - $intgesamtcount == 1) ? 'geplanter Platz' : 'geplante Pl&auml;tze' ) . ' frei)') . '</h2>
';
if ( $bolauthabort )
{
// close page and stoprun.
showmsg();
echo'
<!-- end of specific page content -->
';
readfile( constant("SERVER_FILE_EXTRO") );
die();
}
// Well, Checkpoint.
// Now the user is proofed to be successfully logged in. (All others are wiped out.)
// From here on the user is authorized to enjoy all the following features.
// default sequence within each chapter:
// 1. headline
// 2. submit action
// 3. showmsg();
// 4. user forms
// 5. showmsg();
// 6. five empty rows to separate from next chapter ;)
// prepare garmentsize list for drop-down-boxes
$strgarmentsizecbovaluelist = '<option value="">' . constant("DISPLAY_TEXT_NONE") . '</option>';
reset($strgarmentsizelist);
foreach ( $strgarmentsizelist as $strgarmentsizeitem )
{
$strgarmentsizecbovaluelist = $strgarmentsizecbovaluelist . '<option value="' . $strgarmentsizeitem . '">' . $strgarmentsizeitem . '</option>';
}
// show anmeldung chapter
if ( $bolanmeldung )
{
if ( $bolok )
{
// pr<70>fen, ob die Anmeldungsliste <20>berhaupt vorhanden und beschreibbar ist
if ( !is_writable( constant("SERVER_FILE_ANMELDUNGSLISTE") ))
{
addmsg ( 'Die Anmeldungsliste ist zurzeit nicht verf&uuml;gbar bzw. gesperrt.<br />Falls Du das Gef&uuml;hl hast, da&szlig; dies nicht okay ist, kontaktiere bitte die Orga-Crew. Danke.');
$bolok = false;
}
}
if ( $bolok )
{
// pr<70>fen, ob dieser Nickname bereits angemeldet ist
$strfile = file_get_contents( constant("SERVER_FILE_ANMELDUNGSLISTE") );
if ( stripos( strtolower( $strfile ), chr(10) . strtolower( html_entity_decode( $strnick, ENT_QUOTES )) . chr(9) ) !== false )
{
// Nickname existiert bereits
addmsg ( 'Mit diesem Nickname ist bereits ein Teilnehmer angemeldet.<br />Bitte w&auml;hle einen anderen Nickname.' );
$bolok = false;
}
}
if ( $bolok )
{
if ( $bolok )
{
// Anmeldung speichern
if ( $intfileid = fopen( constant("SERVER_FILE_ANMELDUNGSLISTE"), "a" ))
{
if ( !fwrite( $intfileid, html_entity_decode( $strnick, ENT_QUOTES ) . chr(9) . $strstatus . chr(9) . html_entity_decode ( $stremail, ENT_QUOTES ) . chr(9) . $intwurst . chr(9) . $intkaese . chr(9) . $intmarmelade . chr(9) . (integer) $bolobst . chr(9) . (integer) $bolmuesli . chr(9) . date( "Y.m.d-H:i:s", $intnow ) . chr(9) . $strgarmentsize . chr(10) ))
{
$bolok = false;
};
if ( !fclose( $intfileid ))
{
$bolok = false;
}
}
else
{
$bolok = false;
}
}
if ( $bolok && $bolmailinglist )
{
// Mailinglisten-Subscription speichern
if ( $intfileid = fopen( constant("SERVER_FILE_MAILINGLISTENLISTE"), "a" ))
{
if ( !fwrite( $intfileid, html_entity_decode ( $stremail, ENT_QUOTES ) . chr(10) ))
{
$bolok = false;
};
if ( !fclose( $intfileid ))
{
$bolok = false;
}
}
else
{
$bolok = false;
}
if ( !$bolok )
{
// Wir konnten den User nicht in die Mailinglistendatei schreiben. Ist nicht wirklich schlimm, nur ein bisschen peinlich. Es folgt eine Message aus Canossa, oder so. ;-)
$bolok = true;
addmsg ( 'Du bist zwar ordnungsgem&auml;&szlig; angemeldet, jedoch konnten wir Dich nicht automatisiert in die Warteschlange f&uuml;r die Mailinglisten-Subskribierung einreihen.<br />Bitte melde Dich daher per Mail an &quot;easterhegg' . constant("ANMELDUNG_GUELTIGKEIT_JAHR") . '-subscribe@hamburg.ccc.de&quot; an.<br />Alternativ darfst Du uns auch beschimpfen, weil wir nichtmal eine Textdatei f&uuml;r den MTA schreiben k&ouml;nnen. ;-)' );
}
}
if ( $bolok )
{
// Engelanzahl ggf. hochz<68>hlen
if ( $strstatus == 'Engel' ) $intengelcount = $intengelcount + 1;
if ( $stremail != '' )
{
$strnomailconfirmation = '<br />Hinweis: Es wird keine zus&auml;tzliche Best&auml;tigungsmail verschickt.';
}
addmsg ( 'Deine Anmeldung ist hiermit erfolgt. (' . date( "d.m.Y H:i:s", $intnow ) . ')' . $strnomailconfirmation );
addmsg ( 'Vielen Dank f&uuml;r Dein Interesse - Bis bald in Hamburg.' );
}
else
{
addmsg ( 'Deine Anmeldung konnte nicht gespeichert werden!<br />Bitte kontaktiere die Orga-Crew! Du bist nicht angemeldet!' );
}
}
}
showmsg();
echo
'
<form id="anmeldungform" name="anmeldungform" action="' . $_SERVER["PHP_SELF"] . '" method="post">
<p>
<span class="topic">Dein Nickname:</span>
<input class="db" name="txt_nick" type="text" value="' . $strnick. '" />
<span class="topic">Deine Emailadresse (optional):</span>
<input class="db" name="txt_email" type="text" value="' . $stremail . '" />
<span class="topic"><input id="chk_mailinglist" name="chk_mailinglist" class="control" type="checkbox" value="' . (string) true . '"' . (( $bolmailinglist ) ? ' checked="checked"' : '') . ' />
Ja, ich will Mailinglistenflamez! Und Produktinformationen! (=&gt; Setzt mich bitte auch auf die EH09-Mailingliste easterhegg2009(at)hamburg.ccc.de!)</span>
</p>
<p>
<span class="topic">Du zahlst einmalig f&uuml;r den gesamten Zeitraum (vier Tage):</span>
</p>
<span class="line"><input name="opt_status" id="opt_status" class="control" type="radio" style="width:20px" value="Normal"';
if ( $strstatus == 'Normal' ) echo ' checked="checked"';
echo ' />' . $eintritt['Normal'] . ' Euro als Normalsterblicher</span>
<span class="line"><input name="opt_status" id="opt_status" class="control" type="radio" style="width:20px" value="Mitglied"';
if ( $strstatus == 'Mitglied' ) echo ' checked="checked"';
echo ' />' . $eintritt['Mitglied'] . ' Euro als CCC-Mitglied</span>
<span class="line"><input name="opt_status" id="opt_status" class="control" type="radio" style="width:20px" value="Engel"';
if ( $strstatus == 'Engel' ) echo ' checked="checked"';
if ( $intengelcount >= constant( "ANMELDUNG_ENGEL_MAXCOUNT" ) ) { echo ' disabled="true" /><strike>'; } else echo '/>';
echo $eintritt['Engel'] . ' Euro als Engel (freiwillige Helfer, noch ' . ( constant( "ANMELDUNG_ENGEL_MAXCOUNT" ) - $intengelcount ) . ' ' . (( constant( "ANMELDUNG_ENGEL_MAXCOUNT" ) - $intengelcount == 1) ? 'Platz' : 'Pl&auml;tze' ) . ' frei) &mdash; Konfektionsgr&ouml;&szlig;e: <select name="cbo_garmentsize">' . selectcbovalue ( $strgarmentsizecbovaluelist, $strgarmentsize ) . '</select></span>';
if ( $intengelcount >= constant( "ANMELDUNG_ENGEL_MAXCOUNT" ) ) { echo '</strike> <span class="line" style="margin-left:50px">Es haben sich ausreichend Engel angemeldet -&gt; Danke!<br />Falls speziell Du unbedingt noch zu den Engeln geh&ouml;ren solltest, wende Dich bitte an die Organisatoren.</span>'; }
echo'
<span class="line"><input name="opt_status" id="opt_status" class="control" type="radio" style="width:20px" value="Ermaeszigt"';
if ( $strstatus == 'Ermaeszigt' ) echo ' checked="checked"';
echo ' />' . $eintritt['Ermaeszigt'] . ' Euro als Sch&uuml;ler, erwerbslos etc. (nur gegen g&uuml;ltigen Nachweis)</span>
<p>
<span class="line">Die Bezahlung erfolgt direkt vor Ort in bar.</span>
<span class="line">Im Eintrittspreis enthalten ist eine Easterhegg-Tasse sowie ein t&auml;gliches Fr&uuml;hst&uuml;ck (Br&ouml;tchen, Wurst, Obst, K&auml;se, M&uuml;sli) als auch jederzeit Tee und Kaffee (Flatrate).</span>
<span class="line">Engel erhalten zus&auml;tzlich ein Goodie als Dankesch&ouml;n.</span>
</p>
<p>
<span class="line">Zur Kalkulation der ben&ouml;tigten Nahrungsmenge teile uns bitte mit, was und wieviel Du jeweils t&auml;glich zum Fr&uuml;hst&uuml;ck ben&ouml;tigst.</span>
</p>
<p>
';
echo
'
<span class="topic">Wurstbr&ouml;tchen: </span>
<input class="right" name="txt_wurst" type="text" value="' . $intwurst . '" />
<span class="topic">K&auml;sebr&ouml;tchen: </span>
<input class="right" name="txt_kaese" type="text" value="' . $intkaese . '" />
<span class="topic">Marmeladenbr&ouml;tchen: </span>
<input class="right" name="txt_marmelade" type="text" value="' . $intmarmelade . '" />
';
echo '<span class="line"><input id="chk_obst" name="chk_obst" class="control" type="checkbox" value="' . (string) true . '"';
if ( $bolobst ) echo ' checked="checked"';
echo ' /> Obst </span>';
echo '<span class="line"><input id="chk_muesli" name="chk_muesli" class="control" type="checkbox" value="' . (string) true . '"';
if ( $bolmuesli ) echo ' checked="checked"';
echo ' /> M&uuml;sli </span>';
echo
'
</p>
<p>
<input name="cmd_anmeldung" type="submit" value="Anmeldung best&auml;tigen" />
</p>
</form>
</p>
';
showmsg();
// close page and stoprun.
echo
'
<!-- end of specific page content -->
';
readfile( constant("SERVER_FILE_EXTRO") );
die();
?>