dedlfix: Input Boxen (beispiel Shoutbox)

Beitrag lesen

Hi!

<form action="auswerten.php" method="POST>
  <p><input type="text" name="nick" maxlenght="30" size="30" /></p>
  <p><textarea name="post" rows="16" cols="90"></textarea></p>
  <p><input type="submit" name="send" value="absenden"/></p>
</form>

  
Wenn man gerade auf im Nick-Feld ist und Enter drückt, wurde der Submit-Button nicht aktiviert. Die Spezifikation ist in dem Fall nicht ganz eindeutig, wie dann mit diesem zu verfahren ist. Einige Browser (IE) senden dann kein name-value-Pärchen für den Submit-Button, andere senden einfach das von irgendeinen, wenn es mehrere gibt.  
  

>   if(isset($\_POST['send'])) {  
  
Deshalb ist es besser, nicht den Submit-Button auszuwerten sondern nur zu schauen, ob $\_POST nicht leer ist.  
  

>     // wenn was in nick eingetragen wurde und es gesendet wurde  
>     if(!empty($\_POST['nick']) && isset($\_POST['nick'])) {  
>       $nick = $\_POST['nick'];  
>     } else {  
>     // ansonsten geben wir an nick einen standardwert  
>       $nick = "standard";  
>     }  
  
Ob es sinnvoll ist, einen Nick festzulegen, sei mal dahingestellt. Das kann nur der Probleminhaber anhand seiner Anforderungen klären. Es ist aber nicht unbedingt notwendig, eine neue Variable anzulegen. Man kann den Default-Wert auch selbst in $\_POST/$\_GET-Einträge schreiben. Zudem hat die Funktion empty() quasi ein eingebautes isset(). Wenn es reicht sicherzustellen, dass ein Wert eingegeben wurde (wobei "0" für empty() auch nicht als Wert zählt), dann braucht man kein isset():  
  
    if (empty($\_POST['nick'])) {  
      $\_POST['nick'] = "standard";  
  

>     mysql\_query("INSERT INTO shoutbox SET POST='$post', NICK='$nick'", $datenbankverbindung);  
  
Und hier haben wir leider wieder einmal einen der häufigsten Programmierfehler: nicht beachteter [Kontextwechsel](http://wiki.selfhtml.org/wiki/Artikel:Kontextwechsel).  
  

> natürlich sollten usereingaben gefiltert werden  
  
Gefiltert wonach konkret und für welchen Zweck?  
  

> Um das nun alles in eine Datei zu bekommen musst du nur den code der auswerten.php über dem code der eintragen.php eintragen,  
  
Du meinst also eine Technik namens Affenformular. Mit diesem Stichwort findet man viele konkrete Beispiele.  
  
  
Lo!