public function printForm($actScript = null, $formDataArray) { $this->FormDataObj = $formDataArray; //Wenn Daten einzelner Formularfelder nicht vorhanden sind, wird die POST-Variable als leer initialisiert, //damit sie in der Formularausgabe als leer dargestellt werden. foreach ($formDataArray as $data) { if (!isset($_POST[$data['fieldname']])) { $_POST[$data['fieldname']] = ''; } } //Ausgabe des öffnenden Formular-Divs echo ' <div id="container_eingabeformular">'; //Überprüfen, ob das Formular abgeschickt wurde if (isset($_POST['submit'])) { //Die Methode zur Überprüfung des Formular-Tokens wird aufgerufen und der Rückgabewert gespeichert. $resultToken = FormProtection::checkToken(); //Die Daten stammen nicht aus einem Formular der Webseite if ($resultToken === 'noToken') { echo '<p class="fehler_text">Bitte benutzen Sie nur Formulare dieser Webseite.</p>'; } else { if ($resultToken === false) { echo '<p class="bold">Die Nachricht wurde bereits versandt.</p>'; } else { //Wenn die Datenvalidierung 'true' zurück gibt, sind die Daten in Ordnung und das Mail wird versandt. if ($this->checkData() === true) { //Wenn der Versand erfolgreich war, wird eine bestätigende Meldung ausgegeben. if ($this->sendData() === true) { echo '<p class="bold">Ihre Nachricht wurde erfolgreich versandt.</p><br />'; } else { $this->ErrorStatus = true; $this->ErrorObj[] = 'Ihre Nachricht konnte nicht versandt werden.<br /> Versuchen Sie es später nochmals.</p>'; } } //Ausgabe von allfälligen Fehler-Meldungen if ($this->ErrorStatus === true) { $this->printErrors(); } } } } //Wenn die Daten erfolgreich versandt wurden, wird das Formular leer angezeigt. if ($this->ErrorStatus === false) { foreach ($formDataArray as $data) { $_POST[$data['fieldname']] = ''; } } //Token für Formular erstellen $token = FormProtection::generateToken(); //Eigentliche Formular-Ausgabe echo ' <form id="formular" action="' . $actScript . '" accept-charset="utf-8" method="post"> <table border="0" cellspacing="6">'; foreach ($formDataArray as $data) { echo ' <tr> <td align="left">' . $data['title'] . ' </td> <td>'; if ($data['fieldtype'] == 'textarea') { echo '<textarea name="' . $data['fieldname'] . '" cols="' . $data['cols'] . '" rows="' . $data['rows'] . '">' . $_POST[$data['fieldname']] . '</textarea>'; } if ($data['fieldtype'] == 'text') { echo '<input name="' . $data['fieldname'] . '" type="' . $data['fieldtype'] . '" size="' . $data['size'] . '" maxlength="50" value="' . $_POST[$data['fieldname']] . '"></td>'; } echo ' </tr>'; } echo ' <tr> <td></td> <td><input class="form_submit" type="submit" name="submit" value="senden" /></td> <td><input type="hidden" name="token" value="' . $token . '" /></td> </tr> </table> </form> </div>'; }
public function printForm($actScript = null) { if (!isset($_POST['email'])) { $_POST['email'] = ""; } if (!isset($_POST['text'])) { $_POST['text'] = ""; } //Ausgabe des öffnenden Formular-Divs echo ' <div class="strich_k"></div> <p class="left">Eine weitere Kontaktmöglichkeit bietet das untenstehende Formular. Für eine eventuelle Rückmeldung tragen Sie Ihre E-Mailadresse ein.</p> <div id="container_gastformular">'; //Überprüfen, ob das Formular abgeschickt wurde if (isset($_POST['submit'])) { //Die Methode zur Überprüfung des Formular-Tokens wird aufgerufen und der Rückgabewert gespeichert. $resultToken = FormProtection::checkToken(); //Die Daten stammen nicht aus einem Formular der Webseite if ($resultToken === 'noToken') { echo '<p class="fehler_text">Bitte benutzen Sie nur Formulare dieser Webseite.</p>'; } else { if ($resultToken === false) { echo '<p class="bold">Die Nachricht wurde bereits versandt.</p>'; } else { //Wenn die Datenvalidierung 'true' zurück gibt, sind die Daten in Ordnung und das Mail wird versandt. if ($this->checkData() === true) { //Wenn der Versand erfolgreich war, wird eine bestätigende Meldung ausgegeben. if ($this->sendData() === true) { echo '<p class="bold">Ihre Nachricht wurde erfolgreich versandt.</p><br />'; } else { $this->ErrorStatus = true; $this->ErrorObj[] = 'Ihre Nachricht konnte nicht versandt werden.<br /> Versuchen Sie es später nochmals.</p>'; } } //Ausgabe von allfälligen Fehler-Meldungen if ($this->ErrorStatus === true) { $this->printErrors(); } } } } //Wenn die Daten erfolgreich versandt wurden, wird das Formular leer angezeigt. if ($this->ErrorStatus === false) { $_POST['email'] = ''; $_POST['text'] = ''; } //Token für Formular erstellen $token = FormProtection::generateToken(); //Eigentliche Formular-Ausgabe echo ' <form action="' . $actScript . '" accept-charset="utf-8" method="post"> <p class="form_text">E-Mail: </p> <input class="form_width" type="text" name="email" maxlength="150" value="' . $_POST['email'] . '" /> <p class="form_text">Nachricht: </p> <textarea class="form_width" name="text" rows="6">' . $_POST['text'] . '</textarea> <input class="form_submit" type="submit" name="submit" value="abschicken" /> <input type="hidden" name="token" value="' . $token . '" /> </form> </div>'; }
/** * Darstellen der verschiedenen Inhaltsbereiche * * Zuerst werden die allfälligen Datenbankoperationen durchgeführt und anschliessend der aktuelle * Übersichts- sowie der Formularbereich gezeigt. */ public function printEntries() { //Die allfälligen Datenbankoperationen werden durchgeführt. $this->purchaseDBOperations(); //Der benutzerdefinierte Status der verschiedenen 'areas' wird ermittelt und entschieden, welcher angezeigt wird. $sql = "SELECT eintraege,form_new FROM user_config WHERE login = '******'username'] . "'"; $result = $this->DB->query($sql); $entry = $result->fetch_assoc(); //Speichern in Klassen-Attributen $this->AreaEintraege = $entry['eintraege']; $this->AreaNewForm = $entry['form_new']; //Der unveränderliche Head des Übersichtsbereichs wird ausgegeben. echo "\n" . ' <div id="area2" class="area"> <h2>Alle erfassten Einträge <a class="sub" href="javascript:resetForm();">→ Neuen Eintrag hinzufügen</a><a href="javascript:ajaxRequest(\'scripts/AJAX/closeArea.php?area_name=eintraege\');"><div class="closer"><img src="images/button_area_close.png" /></div></a></h2>'; if ($this->AreaEintraege == 'close') { echo ' <div id="invisible_eintraege" class="invisible">'; } echo ' <form id="eintraege" name="eintrag" action="' . htmlspecialchars($_SERVER['PHP_SELF']); echo $this->Subnav . '" method="post">'; //Die jeweils aktuellen Datenbank-Einträge werden aufgelistet. $this->printOverview(); //Der unveränderliche Footer des Übersichtsbereichs mit den Funktionen "Markierfunktionen" und der Löschfunktion für mehrere Einträge wird ausgegeben. echo ' <div id="buttons"> ↳ <input type="button" name="checkall" value="alle markieren" onclick="checkedall(true)" /> | <input type="button" name="checkall" value="keine markieren" onclick="checkedall(false)" /> | <input class="submit_button" type="submit" name="delete" value="markierte löschen" onclick="return window.confirm(\'Ausgewählte Einträge löschen?\', title=\'Löschen mehrerer Einträge\');" /> </div> </form> </div>'; if ($this->AreaEintraege == 'close') { echo ' </div>'; } //Javascript (scriptaculous), welches das Ordnen im Übersichtsbereich regelt wird ausgegeben, wenn es nicht die Seite 'konzerte' ist. if ($this->DBTableName !== 'konzerte') { echo "\n" . ' <script type="text/javascript"> Sortable.create("eintraege", { onUpdate: function() { new Ajax.Request("sortEntries.php", { method: "post", parameters: { data: Sortable.serialize("eintraege"), tablename: "' . $this->DBTableName . '" } }); } }); </script>'; } //Der unveränderliche Head des Formular-Bereichs wird ausgegeben. (Je nachdem mit anderer Überschrift.) echo "\n" . ' <div id="anker"> </div> <div id="area3" class="area">'; echo ' <h2 class="h">'; if (isset($_POST['id']) and !empty($_POST['id'])) { echo 'Ausgewählten Eintrag bearbeiten<a class="sub" href="' . htmlspecialchars($_SERVER['PHP_SELF']); echo $this->Subnav . '#area_anker" onclick="resetForm();">→ Neuen Eintrag hinzufügen</a>'; } else { echo 'Neuen Eintrag hinzufügen'; } echo '<a href="javascript:ajaxRequest(\'scripts/AJAX/closeArea.php?area_name=form_new\');"><div class="closer"><img src="images/button_area_close.png" /></div></a></h2>'; if ($this->AreaNewForm == 'close') { echo ' <div id="invisible_form_new" class="invisible">'; } echo ' <form id="form_new" name="formnew" action="' . htmlspecialchars($_SERVER['PHP_SELF']); echo $this->Subnav . '" method="post" enctype="multipart/form-data">'; //Wenn ein Fehler bei der Datenvalidierung auftrat, wird hier die Fehlermeldung ausgegeben. if ($GLOBALS['EntryHandler']->ErrorObj === false) { echo ' <div id="formular_fehler"> <p>Fehler!</p>' . $GLOBALS['EntryHandler']->ErrorStr . ' </div>'; } //Das jeweils aktuelle Formular wird ausgegeben. $this->printEntryForm(); //Token für Formular erstellen $token_newentry = FormProtection::generateToken('token_newentry'); //Der unveränderliche Footer des Formular-Bereichs wird ausgegeben. echo ' <br /> <input type="submit" name="submit" value="senden" /> <!--<a href="javascript:update(\'scripts/AJAX/showLoader.php\', \'loader_image\');">loader</a> --> <input type="hidden" name="id" value="'; if ($this->PostIdObj !== false) { if (isset($_POST['id']) and !empty($_POST['id'])) { echo $_POST['id']; } } echo '" /> <input type="hidden" name="token_newentry" value="' . $token_newentry . '" /> <div id="loader_image"> </div> <div class="cleaner"> </div> </form> </div>'; if ($this->AreaNewForm == 'close') { echo ' </div>'; } }