phpbar.de logo

Mailinglisten-Archive

[php] Danke

[php] Danke

Ulf Wendel ulf_(at)_redsys.de
Wed, 16 Feb 2000 23:25:37 +0000


Ulrich Fischer wrote:

> vielen Dank bei der abenteuerlichen Aufklaerung
> der $HTTP_GET_VARS Frage, die ja nach Ulf's Meinung
> nicht unbedingt von Professionalitaet auf hohem
> NiveA(U) zeugte.

Nein, das verstehst Du falsch.

Es wird einfach bei langen URL's nicht funktionieren. Ein Textarea Feld
im Formular und jemand bringt es früher oder später zum crashen. URL's
sind auf eine Länge von 2k begrenzt, alles was darüber liegt ist reine
Glücksache. Bei manchen Browsern wird es einen Absturz geben, bei
anderen funktioniert es möglicherweise. Die klassischen Methoden
Hinweistext zur Benutzung des Back-Buttons und JavaScript Link mit
gleicher Funktionalität sind immer noch die sichersten, wenn man nicht
auf Sessions setzt.

Da auf der Liste nach meinem Gefühl 80% Anfänger mitlesen, sollte man
stets zwischen den Zeilen lesen. So auch wenn jemand URLs direkt
manipulieren und oder erzeugen will und dabei nicht einmal urlencode()
kennt. Sei mir nicht böse, aber ich gebe lieber eine arrogant wirkende
Antwort mit zuvielen Informationen, als das ich einen potentiellen
Einsteiger gegen die Wand laufen lasse, weil ich nicht zwischen den
Zeilen lese oder nur ein Code-Snippet vorwerfe. 

Jetzt da ich weiß, daß Du bei fehlgeschlagener Validierung das Formular
mit den zuvor eingegebenen Daten erneut anzeigen möchtest, kann ich Dir
auch einen anderen, besseren Weg nennen. Kennst Du das klassische if
(isset($submit) ... ?

<?php

  $flag_formzeigen = false;

  if (!isset($submit)) {
    // Formular zeigen, es wurde noch kein Submit Button betätigt
    $flag_formzeigen = true;

  } else {
    // Formulardaten validieren und ggf. Formular nochmals anzeigen
    $fehler = "";
    if (""==$vorname || strlen($vorname)<3) {
      $fehler.="Sie müssen einen Vornamen eingeben.<br>\n";
    [...]
    if (""!=$fehler) {
      // Formulardaten unvollständig
      // Fehler ausgeben und Formular anzeigen
      echo "<h2>Eingabefehler</h2>\n$fehler";
      $flag_formzeigen = true;
    } else {
      // Formulardaten ok
      // Mail senden
      $message = [...];
      _(at)_mail("info_(at)_kunde.de", "Kontakanfrage", $message);
    }
  }

  if ($flag_formzeigen)
    include("formular_kontaktanfrage.inc");
}
?>

Das Formular, welches in der Datei formular_kontakanfrage.inc steht
trägt als action "<?php echo $PHP_SELF; ?>".

Warum willst Du da noch mit HTTP_POST_VARS() hantieren und aufwendig
eine URL generieren? Obiges ist kurzer, klarer und gut zu lesender Code.
Wenn ich auf Code treffe, der an irgendeinem der globalen Arrays
$HTTP_POST_VARS, $HTTP_GET_VARS oder $GLOBALS herumspielt klingeln bei
mir die Alarmglocken und ich schaue zweimal nach, was da zusammengehackt
wird.

Ulf


php::bar PHP Wiki   -   Listenarchive