Peter Rehm's Blog

apple,development,life & more

gängige PHP Fehler - Tipps & Tricks

Mit 2 Kommentaren

Neulich wurde ich gebeten, mir "kurz" ein kleines PHP Skript anzusehen,
und bei der Fehlersuche zu helfen. Dabei ist mit allerdings sehr schnell
aufgefallen dass einige grundlegende Unschönheiten zu finden sind.

Daher will ich anhand des mir zugesandten Codes einige Tipps zur PHP Entwicklung
geben.



  1. register_globals

    Ein immer wieder auftrendes Problem ist die register globals Geschichte,
    da PHP einem lange Zeit die Freiheit ließ, auf die POST Variable 'test' auf
    zwei Arten zuzugreifen. Entweder als $test, oder per $_POST['test'].
    Nutzt man erstere Variante kann man sich nie sicher sein, woher der
    Inhalt der Variablen eigentlich stammt, und man vergisst leicht einen
    vielleicht gefährlichen Inhalt zu escapen. Sofern die Möglichkeit besteht
    ist es sogar empfehlenswert register_globals auszuschalten. Aber man
    sollte es sich zumindest immer angewöhnen, auf POST/GET/REQUEST variablen
    immer mittels den dafür vorgesehenen superglobalen Arrays zuzugreifen.




  2. SQL Injections

    Eine große Gefahr stellen vor allem im Zusammenhang mit register_globals
    die SQL Injections dar, über die nicht gewollter SQL Code eingeschleußt
    werden kann. Um hier nicht auszuschweifen sollte man sich immer angewöhnen,
    Inhalt der manipuliert sein kann, zu escapen. Eine einfach Möglichkeit
    hierzu bietet mysql_real_escape_string(). Man sollte sich wenigstens
    angewöhnen den Inhalt immer zu escapen. Es empfiehlt sich auch eine
    eigene Funktion dafür zu nehmen, dass man später auch noch andere
    Verfahren einsetzen könnte, indem man nur eine Funktion überarbeiten
    muss. Hier ein Beispiel:



    CODE:
    /**
    * easy accesible handle to escape all db strings
    * @param string $string string which should be escaped to be put into an sql statement
    * @return string returns the escaped string
    */
    function escapeDB($string)
    {
    global $run;
    if(is_numeric($string))
    {
    return $string;
    } else {
    return $run['db']->qstr($string,get_magic_quotes_gpc());
    }
    }



  3. Variablen

    Man sollte Variablen immer klein schreiben, und Umlaute sollten nicht
    eingesetzt werden. Es ist meist auch recht angenehm die äquivalente englische
    Bezeichnung für Variablen zu verwenden. EIn unschönes Beispiel:



    CODE:
     '$Arbeitsverhaeltnis', '$Kündigungsfrist', '$Sonstiges'



  4. Fehlermeldungen

    Fehlermeldungen sollte man am besten immer beherzigen. PHP kennt verschiedene
    Modi, je nach "wichtigkeit" eines Fehlers. Meist werden die NOTICE's
    ausgeblendet. Allerdings sind NOTICES oft auch recht hilfreich,
    da man erkennt wo man z.B. eine noch nicht initialisierte Variable
    verwendet. Es empfiehlt sich meistens alle Fehlermeldungen anzuzeigen.
    Die macht man wie folgt:


    CODE:
    error_reporting(E_ALL);

    Vor allem gefährlich ist das manuelle Unterdrücken von Fehlermeldungen
    mittels dem @ Operator. Diesen sollte man auch nicht einsetzen, da dadurch
    die Fehlersuche oft erschwert sein kann.





Dies mal nur als kurze Zusammenfassung.

Geschrieben von Peter Rehm

07.06.2007 um 15:49:13

Abgelegt in PHP

0 Trackbacks zu gängige PHP Fehler - Tipps & Tricks

Trackback-URL für diesen Eintrag

  1. Keine Trackbacks

2 Kommentare zu gängige PHP Fehler - Tipps & Tricks

  1. "Modi" schreibt man ohne "ie".
    na endlich konnte ich mal wieder motzen :-)

    red

    08 Jun 07 um 14:45

    Antwort

  2. tzz, das war nur ein tippfehler :-)

    aber danke, hab ich schon korrigiert!

    Peter Rehm

    08 Jun 07 um 15:53

    Antwort

Kommentar schreiben

BBCode-Formatierung erlaubt
Umschließende Sterne heben ein Wort hervor (*wort*), per _wort_ kann ein Wort unterstrichen werden.
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.

Um maschinelle und automatische Übertragung von Spamkommentaren zu verhindern, bitte die Zeichenfolge im dargestellten Bild in der Eingabemaske eintragen. Nur wenn die Zeichenfolge richtig eingegeben wurde, kann der Kommentar angenommen werden. Bitte beachten Sie, dass Ihr Browser Cookies unterstützen muss, um dieses Verfahren anzuwenden.
CAPTCHA

Kommentare werden erst nach redaktioneller Prüfung freigeschaltet!