Hallo Adalbert, hallo Leute, Am Mittwoch, 2. Juli 2003 20:13 schrieb Adalbert Michelic: [...]
Abgesehen davon ist die Abfrage isset(...) an dieser Stelle sowieso sinnbefreit, da wenn nicht gesetzt, sicher nicht "test" rauskommt, sondern maximal ein leerer String. Da hat wohl einer versucht, ein Skript auf sicher zu trimmen und keine Ahnung gehabt, was er da macht.
[ ] Du betreibst PHP mit error_reporting = E_ALL [x] Ich schon ;-) cb@tux:~> echo '<?php echo $test ?>' | php # gekürzt um HTTP-Header & co Notice: Undefined variable: test in - on line 1 Bei der üblichen Einstellung error_reporting = E_ALL & ~E_NOTICE werden solche Dinge nicht bemängelt. Das hat IMHO den Nachteil, dass - Fipptehler in Variablennamen zu schwer zu findenden Fehlern führen - "unsauberer" Code trotzdem ohne Warnungen läuft (auch solcher von mir, ich hab mein PHP nämlich auch erst vor kurzem strenger geschaltet...) - mögliche Sicherheitslücken (via register_globals), die nicht initialisierte Variablen ausnutzen, unentdeckt bleiben - ... Fazit: Genauso wie man in Perl "strict" und "warnings" benutzt, sollte man in PHP nicht E_NOTICE von error_reporting ausschließen ;-) Gruß Christian Boltz PS: Wie man Parameter aus $_GET "sauber" importiert, ohne jedesmal isset() usw. zu benötigen, hab ich vor ein paar Tagen geschrieben. Hier nochmal die benötigte Funktion: (Details siehe Listenarchiv ;-) function safeget ($param) { # import URL params from $_GET # If the wanted param was not given, there will be no error message # (E_NOTICE level). In this case, this function will return an empty # string. $retval=""; if (isset($_GET["$param"])) $retval=$_GET["$param"]; # # compatibility code for PHP 4.0 (and older) # global $$param; # if ( ! isset($_GET) && isset($$param)) $retval=$$param; return $retval; } # end safeget() # Anwendungsbeispiel: $lang = safeget('lang'); # statt $lang = $_GET['lang'] -- Gibt es ein Buch über das maßvolle Verwenden von Fußnoten? Wenn ja, dann bin ich bereit, Dir ein Exemplar zu schicken. [Thorsten Haude zu David Haller in sl-etikette]