Ankündigung

Einklappen
Keine Ankündigung bisher.

Skript schickt Formular leer ab trotz definierter Fehlermeldungen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Skript schickt Formular leer ab trotz definierter Fehlermeldungen

    Hallo,

    beim Versuch mir ein "Skript" zu basteln, mit welchem im am Ende dann mal meine Ein und Ausgaben verwalten kann, bin ich auf ein Problem gestoßen.
    Und zwar schickt er mir das Formular ab obwohl es leer ist. Aber die definierten Fehlermeldungen gibt er trotzdem aus.

    Woran liegt das denn, dass das Formular trotzdem leer abgeschickt wird.
    error_reporting(E_ALL); ist eingeschaltet.
    Ich finde den Fehler einfach nicht.

    Bitte um Hilfe.

    PHP-Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
    <head>
        <title>Titel</title>
        <meta http-equiv="content-type" content="text/html; charset=us-ascii" />
        <meta name="description" content="" />
        <meta name="author" content="" />
        <meta name="keywords" content="" />
        <style type="text/css">

        fieldset {
            width: 290px;
        }
        span.input {
            float: left;
            width: 100px;
            padding-bottom: 5px;
        }
        .absenden {
            border: none;
        }

        </style>
        <link href="images/favicon.ico" type="image/x-icon" rel="shortcut icon" />
    </head>

    <body>
    <?php

    //error
    error_reporting(E_ALL);

    $base 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr|stuvwxyz0123456789_-';
    $max strlen($base)-1;
    $aid '';
    mt_srand((double)microtime()*1000000);
    while (
    strlen($aid)<32)
    $aid .= $base{mt_rand(0,$max)};





      if (isset( 
    $_POST['absenden']) ) {
        
    $fehler '';

        
    // Maskierende Slashes aus POST Array entfernen
        
    if (get_magic_quotes_gpc()) { $_POST array_map'stripslashes'$_POST ); }

        
    $beschreibung htmlspecialchars($_POST['beschreibung']);
        
    $datum htmlspecialchars($_POST['datum']);
        
    $anzahl htmlspecialchars($_POST['anzahl']);
        
    $betrag htmlspecialchars($_POST['betrag']);
        
    $kategorie htmlspecialchars($_POST['kategorie']);


        
    $db = @new mysqli'localhost''root''pass''kasse' );
        
    // check verbindung
        
    if (mysqli_connect_errno() == 0)
        {
            
    $sql 'INSERT INTO `ausgaben` (`aid`, `beschreibung`, `datum`, `anzahl`, `betrag`, `kategorie`) VALUES (?, ?, ?, ?, ?, ?)';
            
    $eintrag $db->prepare$sql );
            
    $eintrag->bind_param'sssids'$aid$beschreibung$datum$anzahl$betrag$kategorie );
            
    $eintrag->execute();
            
    // überprüft ob eintrag erfolg hatte
            
    if ($eintrag->affected_rows == 1)
            {
                echo 
    'Der neue Eintrage wurde hinzugef&uuml;gt.';
            }
            else
            {
                echo 
    'Der Eintrag konnte nicht hinzugef&uuml;gt werden.';
            }
        }
        else
        {

            echo 
    'Die Datenbank konnte nicht erreicht werden. Folgender Fehler trat auf: <strong>' .mysqli_connect_errno(). ' : ' .mysqli_connect_error(). '</strong>';
        }
        
    // db schliessen
        
    $db->close();

        if (isset(
    $_POST['beschreibung']) && !is_array($_POST['beschreibung']) && $_POST['beschreibung'] != '') {
         
    //
        
    } else {
          
    $fehler .= 'Keine Beschreibung angegeben<br />';
        }

        if (isset(
    $_POST['datum']) && !is_array($_POST['datum']) && $_POST['datum'] != '') {
        
    //
        
    } else {
          
    $fehler .= 'Kein Datum eingetragen!<br />';
        }

        if (isset(
    $_POST['anzahl']) && !is_array($_POST['anzahl']) && $_POST['anzahl'] != '') {
        
    //
        
    } else {
          
    $fehler .= 'Keine Anzahl angegeben!<br />';
        }

        if (isset(
    $_POST['betrag']) && !is_array($_POST['betrag']) && $_POST['betrag'] != '') {
         
    //
        
    } else {
          
    $fehler .= 'Kein Betrag eingegeben!<br />';
        }

        if (isset(
    $_POST['kategorie']) && !is_array($_POST['kategorie']) && $_POST['kategorie'] != '') {
        
    //
        
    } else {
          
    $fehler .= 'Keine Kategorie ausgew&auml;hlt!<br />';
        }

        if (
    $fehler == '') {
        } else {
          echo 
    "<b>$fehler</b>";
        }
      }
    ?>


        <fieldset>
            <legend>Neuen Datensatz anlegen!</legend>

            <form name="ausgan" action="" method="post" enctype="text/html">
                <input type="hidden" name="id" value="id eingeben" size="20" maxlength="50" />
    <span class="input">Beschreibung: </span>            <input type="text" name="beschreibung" value="<?php
        
    if (isset($_POST['beschreibung']) && !is_array($_POST['beschreibung'])) {
          echo 
    $_POST['beschreibung'];
        }
    ?>" size="20" maxlength="50" /><br style="clear: both;" />
    <span class="input">Datum: </span>            <input type="text" name="datum" value="<?php
        
    if (isset($_POST['datum']) && !is_array($_POST['datum'])) {
          echo 
    $_POST['datum'];
        }
    ?>" size="20" maxlength="50" /><br style="clear: both;" />
    <span class="input">Anzahl: </span>            <input type="text" name="anzahl" value="<?php
        
    if (isset($_POST['anzahl']) && !is_array($_POST['anzahl'])) {
          echo 
    $_POST['anzahl'];
        }
    ?>" size="20" maxlength="50" /><br style="clear: both;" />
    <span class="input">Betrag: </span>            <input type="text" name="betrag" value="<?php
        
    if (isset($_POST['betrag']) && !is_array($_POST['betrag'])) {
          echo 
    $_POST['betrag'];
        }
    ?>" size="20" maxlength="50" /><br style="clear: both;" />
    <span class="input">Kategorie: </span>

    <select name="kategorie">
        <option value="">Bitte w&auml;hlen</option>
        <option value="privat"<?php
          
    if (isset($_POST['kategorie']) && $_POST['kategorie'] == 'privat') {
            echo 
    ' selected="selected"';
          }
        
    ?>>Privat</option>
            <option value="xprivat"<?php
          
    if (isset($_POST['kategorie']) && $_POST['kategorie'] == 'xprivat') {
            echo 
    ' selected="selected"';
          }
        
    ?>>XPrivat</option>
    </select>

    <br style="clear: both;" />
                <input type="submit" class="absenden" name="absenden" value="Save" />
            </form>

        </fieldset>
    </body>
    </html>
    #m { f : g }


  • #2
    Das ist Standardverhalten.
    HTML ist es ziemlich egal, ob Daten in einer Form enthalten sind oder nicht. Submit ist Submit und ein Klick darauf schickt das ab, was zu diesem Zeitpunkt vorhanden ist (auch wenn es nichts ist).

    PHP => Serverseitig
    HTML/JavaScript => Clientseitig
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      Wenn das Formular abgeschickt wird dann speicherst du zuerst die ankommenden daten und prüfst erst anschließend, ob diese überhaupt vorhanden sind.
      PHP-Code:
      if ($var != 0) {
        
      $var 0;

      Kommentar


      • #4
        Die mit htmlspecialchars bearbeiteten Ausdrücke in der DB zu speichern, wird in der Regel nicht empfohlen. Ansonsten ist Deine Frage ja schon beantwortet.
        Es ist schon alles gesagt. Nur noch nicht von allen.

        Kommentar

        Lädt...
        X