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>'; }
/** * Datenbankoperationen * * Hier werden die Datenbankoperationen wie Hinzufügen, Bearbeiten und Löschen von Einträgen geregelt * und an die Klasse 'EntryHandler' zur Ausführung weitergeleitet. */ private function purchaseDBOperations() { //Wenn ein GET-Parameter 'delId' vorhanden ist, wird der Dateneintrag gelöscht. if (isset($_GET['delId']) and is_numeric($_GET['delId'])) { $GLOBALS['EntryHandler']->deleteEntry(); } //Wenn das Übersichts-Formular gesendet wurde (nur bei Betätigung des Löschbuttons der Fall), werden alle //gekennzeichneten Dateneinträge auf einmal gelöscht. if (isset($_POST['delete'])) { $GLOBALS['EntryHandler']->deleteEntries(); } //Wenn das Formular nicht abgeschickt wurde, wird das POST-Array geleert. if (!isset($_POST['submit'])) { $_POST = ''; } else { //Im Attribut 'FormSubmitOK' wird das Abschicken des Formulars vermerkt. $this->FormSubmitOk = true; //Wenn Daten einzelner Formularfelder nicht vorhanden sind, wird die POST-Variable als leer initialisiert, //damit sie in der Formularausgabe als leer dargestellt werden. foreach ($_POST as $key => $data) { if (!isset($data)) { $_POST[$key] = ''; } } //Wenn der Button "senden" betätigt wurde, werden die Benutzereingaben in die Datenbank geschrieben. if ($_POST['submit'] == 'senden') { //Token spezifizieren, um das richtige Formular zu überprüfen. if (isset($_POST['token_sitetitle'])) { $tokenSesName = 'token_sitetitle'; $this->FormSubmitOk = false; } if (isset($_POST['token_newentry'])) { $tokenSesName = 'token_newentry'; } //Überprüfen, ob die Daten vom Formular der Seite stammen und noch nicht gesendet wurden. (Reload) //Die Methode zur Überprüfung des Formular-Tokens wird aufgerufen und der Rückgabewert gespeichert. $resultToken = FormProtection::checkToken($tokenSesName); //Die Daten stammen nicht aus einem Formular der Webseite if ($resultToken === 'noToken') { $GLOBALS['EntryHandler']->ErrorStr = '<p>Bitte benutzen Sie nur Formulare dieser Webseite.</p>'; $GLOBALS['EntryHandler']->ErrorObj = false; $this->FormSubmitOk = false; $this->PostIdObj = false; return false; } //Die Nachricht wurde bereits versandt (Reload) if ($resultToken === false) { $GLOBALS['EntryHandler']->ErrorStr = '<p>Ihre Daten wurden bereits übertragen.</p>'; $GLOBALS['EntryHandler']->ErrorObj = false; $this->FormSubmitOk = false; $this->PostIdObj = false; return false; } $GLOBALS['EntryHandler']->addEntry(); //Wenn die Datenbankoperation erfolgreich war, wird das Formular "Neuer Eintrag" wieder leer dargestellt. if ($this->DB->lastSQLStatus === true) { $this->FormSubmitOk = false; $this->PostIdObj = false; } } } //Wenn ein GET-Parameter 'editId' vorhanden ist, wird das Formular mit dem Dateneintrag angezeigt. if (isset($_GET['editId']) and is_numeric($_GET['editId'])) { $this->FormSubmitOk = true; $GLOBALS['EntryHandler']->showEntry(); } }