Hello,
[1] empty() erkennt leider auch auf "leer", wenn eine '0' übertragen worden ist.
Ich glaube um das zu vermeiden kann man isset() verwenden.
Isset gibt FALSE zurück wenn die Variable nicht existiert oder NULL enthält. "" (Leerstring) sowie 0 müsste TRUE zurück geben.
Das stimmt.
Welches Verhalten gewünscht ist muss der PHP Neuling selbst wissen :)
Und welche Behandlung außerdem noch notwendig sein könnte, sollte PHP Neuling auch überlegen. Alle Paramerter, die beim Request übergeben werden, und von PHP im Script bereitgestellt werden, werden von PHP entweder zu einem String (Skalar) oder zu einem Array aus Strings umgewandelt.
Diese Strings können dann auch führende und anhängende Leerzeichen enthalten. Ob sie (ggf. nach der Bereinigung) den gewünschten Datentyp repräsentieren können, muss man dann selber prüfen. Es reicht also i.d.R. nicht, nur das Vorhandensein der Variable zu kontrollieren.
Dafür könnten sich z.B. auch die Filter-Funktionen eignen
http://de3.php.net/manual/en/book.filter.php,
die es seit PHP 5.2 gibt. Die sind sicherlich noch ein wenig gewöhnungsbedürftig, gehen aber mMn in die richrtige Richtung, wenn man ganze Formularinhalte prüfen will.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg