Ich lade in meine Site per include() die Inhalte rein, abhängig ist das ganze von ner Variable namens $sid.
Ich hab also in der URL zum Beispiel “index.php?sid=aktuelles”
Die Site lädt dann einfach an der entsprechenden Stelle eines PHP-Datei mit namen “aktuelles.php” aus dem Ordner “sites” rein. Und das natürlich ohne Rücksicht auf Verluste^^
Will heißen, es wird nicht überprüft ob die Site überhaupt existiert, falls nicht bekomme ich halt ne unschöne Fehlermeldung. Soweit sogut jetzt seid ihr dran
Wie kann ich die Fehlermeldung abfangen und stattdessen ne Art 404-Seite anzeigen?
Gibts ne if-Abfrage à la “Existiert diese Datei überhaupt?”
[quote]Mit dem @ stell ich praktisch ein dass ich meine eigene Fehlermeldun angebe?[/quote]Nein, das stimmt so nicht ganz…
das @ unterbindet sozusagen die Fehlermeldung von include(), dies geht bei vielen Funktionen, jedoch nicht bei allen…
was if bedeutet ist ja wohl klar, oder?
und das ! vor der (fehlerunterbungenen) Funktion bewirkt, dass wenn ein false von include zurückgegeben wird, was hier ja der fall ist, da die Datei (evtl) nicht besteht, die if anweisung gültig (also ture) ist, und somit wird dann der folgende echo-Befehl ausgeführt
Und das wiederum heisst, dass du sehr naiv programmierst.
Du solltest vorab überprüfen, ob die Datei überhaupt innerhalb eines erlaubten Bereiches oder Musters liegt - sonst kann u.U. nämlich alles mögliche eingebunden werden.
Das einfachste wäre, eine Liste erlaubter Dateien vorzugeben, und dagegen zu prüfen. Damit würde sich dein Problem auch erledigen, weil dann dein Script eine entsprechende Meldung ausgeben kann, anstatt den Zugriff überhaupt zu versuchen.
@bcg: Danke für die Erklärung, jetz hab ichs verstanden.
@chrisb: Naiv ist ein sehr hartes Wort…Ich würde es eher als simpel oder “wenig professionell” bezeichnen^^
Du hast im Grunde schon recht, allerdings habe ich das Script schon so geschrieben, dass nur PHP-Dateien in einem ganz bestimmten Ordner angesprochen werden können. Ein Missbrauch wird ohne die FTP-Daten kaum möglich sein.
Trotzdem interessiert mich dein Vorschlag, eine Liste mit erlaubten Dateien zu erstellen. Wie könnte sowas aussehen? Ne MySQL tabelle bzw. ne Datei mit den Dateinamen?
Wäre toll wenn du mir n paar Stichwörter geben könntest damit ich mich über Google n bisschen einlesen kann
Aja, danke nochmal an alle Poster!