예제 #1
0
 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'] . '&nbsp;&nbsp;&nbsp;&nbsp;</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>';
 }
예제 #2
0
 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>';
 }
예제 #3
0
    /**
     * 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();">&#8594; 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"> &#8627;
              <input type="button" name="checkall" value="alle markieren" onclick="checkedall(true)" />&nbsp;&nbsp;&#124;&nbsp; 
              <input type="button" name="checkall" value="keine markieren" onclick="checkedall(false)" />&nbsp;&nbsp;&#124;&nbsp;                 
              <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();">&#8594; 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>&nbsp;-->            
            <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>';
        }
    }