dedlfix: Mein Self Formmailer, brauchbar oder Gemeingefährlich?

Beitrag lesen

echo $begrüßung;

Leider trifft man diese Formulierung vom Übernehmen ziemlich häufig. Und die meisten verbinden damit das unnötige Umkopieren in andere Variablen. Deswegen beanstandete ich zumindest deine Formulierung.

Durch das umkopieren erspare ich mir viel geschreibe an anderen stellen.
Beispielsweise,
if (isset($_POST['Name'])) {
  $name_value = htmlspecialchars($Name);
}
  else { $name_value = 'was auch immer'; }[/code]

Damit hast du nun deinen Variableninhalt bereits für eine bestimmte Ausgabe vorbereitet. Wenn die Daten nun auch noch in eine Datenbank geschrieben werden sollen, was machst du dann? Dann hast du unbrauchbare HTML-Kodierungen drin.

Es spricht nichts dagegen, wenn du die Eingabedaten prüfst und eventuell einen Defaultwert für nicht oder fehlerhaft eingegebene Werte verwendest. Dieses geprüfte Ergebnis kann man in einer eigenen Variable anlegen. Es ist dann auch nicht mehr unbedingt das mit einem $_POST-Wert im Hinterkopf verbundene "Achtung! Ungeprüfte Benutzereingabe!" notwendig. Prüfen bedeutet aber nicht, Werte für eine bestimmte Ausgabe vorzubereiten. Das ist am besten dort aufgehoben, wo diese Ausgabe erzeugt wird. So sieht man an Ort und Stelle dass die Behandlung für den Ausgabekontext erfolgte, und muss nicht erst den gesamten vorherigen Quelltext durchsuchen, ob denn die Werte bereits berücksichtigt worden sind.

Es spricht etwas dagegen, wenn man einfach nur stur $x = $_POST['x']; für alle Eingabewerte verwendet. Dabei geht einfach nur der optische Hinweis auf die Benutzereingabe verloren, ohne dass man etwas wesentliches dazugewinnt.

Jetzt kann ich mit den Variablen Flexibel arbeiten, was spricht dagegen?
Mit Flexibel meine ich z.b. eine Vorschau, Affenformular, fehlermeldungen ggbf. an 2 stellen.

Das ist nicht mehr flexibel sondern festgelegt auf ein Ausgabemedium. Flexibel wären Rohdaten, die für beliebige Anwendungsfälle verwendet werden können.

Zum Beispiel ein Datum. Der Anwender soll, wie in Deutschland üblich, das Datum in der Form tt.mm.jjjj eingeben. Er gibt 31.2.2008 ein. So kann man es aber nicht prüfen, geschweige denn für ein Datumsfeld einer Datenbank verwenden, das die Schreibweise yyyy-mm-dd verlangt. Falsch ist er auch noch, März hätte der Anwender eigentlich eingeben wollen. In $_POST['datum'] steht die Benutzereingabe. Dieser Eingabewert soll aber auch nicht verloren gehen, denn im Fehlerfall soll dem Anwender genau diese falsche Eingabe zur Korrektur vorgelegt werden. Ein leeres Eingabefeld (nebst Fehlermeldung) vorzulegen ist unfein, muss er doch wegen des einen kleinen Tippfehlers alles nochmal eingeben. Rohdaten, um daraus ein Datum formatieren zu können, stehen wegen des fehlerhaften Wertes nicht zur Verfügung. Als Lösung kann man $_POST['datum'] für das Affenformular so lassen wie es ist. Der kontrollierte und in einen Unix-Timestamp umgewandelte Wert kann und muss in einer anderen Variable zu liegen kommen. Wenn alles richtig war kann dieser Roh-Wert nun bei der Ausgabe an diverse Ausgabemedien mit den üblichen Funktionen formatiert werden.

Wenn ich jedes mal direkt mit $_GET oder $_POST arbeiten würde müsste ich jedesmal die abfrage machen, ob der Wert überhaupt vorhanden ist.

Die Antwort lautet EVA-Prinzip. Erst die Eingabedaten behandeln und prüfen. Dann die Verarbeitung mit ihnen vornehmen. Da sie ja bereits geprüft und vorhanden sind, muss man sich während der Verarbeitung und der Ausgabe auch nicht ständig erneut prüfen.

echo "$verabschiedung $name";

0 61

Mein Self Formmailer, brauchbar oder Gemeingefährlich?

Malcolm Beck´s
  • php
  1. 0
    gooxsy
    1. 0
      Malcolm Beck´s
      1. 0
        gooxsy
        1. 0
          Malcolm Beck´s
          1. 0
            gooxsy
            1. 0
              Malcolm Beck´s
  2. 0
    Stonie
    1. 0
      Malcolm Beck´s
      1. 0
        Stonie
        1. 0
          gooxsy
        2. 0

          Die SELF MODS, brauchbar oder Gemeingefährlich?

          Malcolm Beck´s
          • menschelei
          1. 0
            Ingo Turski
        3. 0
          Malcolm Beck´s
  3. 0
    Volker Nebelung
    1. 0
      Malcolm Beck´s
      1. 0
        gooxsy
        1. 0
          Malcolm Beck´s
          1. 0
            Volker Nebelung
            1. 0
              Malcolm Beck´s
              1. 0
                Volker Nebelung
                1. 0

                  Hacker on Board

                  Malcolm Beck´s
                  • menschelei
                  1. 0
                    Volker Nebelung
                    1. 0
                      Malcolm Beck´s
                      1. 0
                        Volker Nebelung
                        1. 0
                          Malcolm Beck´s
        2. 0
          dedlfix
          1. 0
            gooxsy
            1. 0
              dedlfix
              1. 0
                Malcolm Beck´s
                1. 0
                  dedlfix
                  1. 0
                    Malcolm Beck´s
                    1. 0
                      at
  4. 0
    Ingo Turski
    1. 0
      Malcolm Beck´s
      1. 0
        Ingo Turski
        1. 0
          Malcolm Beck´s
          1. 0
            Ingo Turski
            1. 0

              Mein Self Formmailer. Danke.

              Malcolm Beck´s
              1. 0
                Patrick Andrieu
                1. 0
                  Malcolm Beck´s
                  1. 0
                    Patrick Andrieu
                    1. 0
                      Malcolm Beck´s
                      1. 0
                        Patrick Andrieu
                        1. 0
                          Malcolm Beck´s
    2. 0
      Cybaer
      1. 0
        Ingo Turski
        1. 0
          Cybaer
  5. 0

    Mein Self Formmailer ist fertig.

    Malcolm Beck´s
    1. 0
      Tom
      1. 0
        Malcolm Beck´s
        1. 0
          Tom
          1. 0
            Malcolm Beck´s
    2. 0
      Ingo Turski
      1. 0
        Malcolm Beck´s
        1. 0
          Ingo Turski
          1. 0
            Malcolm Beck´s
            1. 0
              Malcolm Beck´s
            2. 0
              Tom
              1. 0
                Malcolm Beck´s
  6. 0

    PHP Function, Variable auf true/false setzen

    Malcolm Beck´s