Mailinglisten-Archive |
Burkes schrieb: > 1c) Alternativ kann man jedes $PHP_SELF im Text durch > $_SERVER['PHP_SELF'] ersetzen. nicht alternativ, dies sollte die primäre Verwendung sein! alternativ, wenn wirklich unbedingt benötigt, kann man ja am Anfang des Scriptes $_SESSION['PHP_SELF'] setzen falls wirklich noch nicht vorhanden! if ( '4.1.0' > phpversion() ) { $_SESSION =& $HTTP_SERVER_VARS; } auch in alten Scripten sollte man $HTTP_SERVER_VARS['PHP_SELF'] anstelle von von $PHP_SELF verwenden ! > 2) Prüfen, ob alle Variablen im Text initialisiert sind > > Alle Variablen, die sich auf (potentielle) Formularparametern oder > Cookie-Parametern beziehen, initialisieren. Zum Überprüfen kann man > error_reporting auf E_ALL setzen und das Skript aufrufen, dort dann > auf die Warnmeldung "Undefined Variable" achten. Variablen sind _immer_ zu initialisieren! > Dies sollte man aus Sicherheitsgründen auch dann tun, wenn die > Error-Meldungen auf dem Online-Server unterdrückt werden > (http://www.oreilly.de/catalog/progphpger/chapter/ch12.pdf) > (http://www.informatik.tu-cottbus.de/~tk/lehre/Skriptprogrammierung_WS > 0203/Sicherheit_in_Webanwendungen.pdf) > > Vorbemerkung zur Intialisierung > > $superuser = false; // = Intialisierung einer True/False Variable > if (check_privileges( )) $superuser = true; > > oder: > > $name=""; // = Intialisierung einer Stringvariablen > $name = $vorname." ".$nachname; > > > 3) Die Übergabevariablen im Skript zu Beginn des Skripts oder bei > jedem ersten Auftauchen umdefinieren: > > $name=""; // initialisieren > $name = $_SERVER['NAME]; // ab jetzt funktioniert $name wieder. > > > Bei Übergabevariablen (Formularparameter, z.B. > www.php.net/xyz.php?name=meier) besteht noch die Gefahr, dass die > behandelte Variable gar nicht übergeben wurde und es zu einer > Warnmeldung kommt. Daher ist obige Formel zu erweitern: > > $name=""; > if (isset($_SERVER['NAME']) $name = $_SERVER['NAME]; solche zuweiseungen sollte man nicht machen, sie verschlechtern die Lesbrkeit des Codes wenn externe Variablen verwendet werden dann sollten sie immer aus ihrem superglobalen Array heraus verwendet werden eine Zuweisung ala: $name = $_SERVER['NAME] bringt keinen prkatischen Vorteil, spätere Verwendung von $name im Script verschleiert die Herkunft der Variable es sollte im gesamten Script $_SERVER['NAME'] verwendet werden > Alternative wäre, JEDES Auftauchen von "$name" durch $_SERVER['NAME'] > zu ersetzen, dann ist aber noch auf erstmalige Intialisierung zu > achten und die IF-Abrage zu verwenden. nicht Alternativ, dies ist die zu bervorzugende Variante! -- Sebastian Mendel www.sebastianmendel.de www.warzonez.de www.tekkno4u.de www.nofetish.com www.sf.net/projects/phpdatetime www.sf.net/projects/phptimesheet
php::bar PHP Wiki - Listenarchive