• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

header() Problem

Stylesau0815

Neues Mitglied
Hallo zusammen,

folgenden Code ganz am Anfang meiner index.php eingebaut:

PHP:
if ($_SERVER["REQUEST_URI"] != "/"): @include('inc/content'.$_SERVER["REQUEST_URI"].'.php'); if (!@include('inc/content'.$_SERVER["REQUEST_URI"].'.php')): header("HTTP/1.0 404 Not Found"); include('inc/content/404.php'); endif;
else: include('inc/content/home.php');
endif;

Was mache ich da falsch? Der Text für die 404 Seite wird angezeigt, wenn die entsprechende Datei nicht gefunden wird, aber der header() Aufruf gibt einen Fehler...

Danke Euch! :)
 
Ist es so schwierig, Code ordentlich einzurücken? :???:

Du suchst in etwa das hier:

PHP:
$page = 'home';

if ($_SERVER["REQUEST_URI"] != '/') {
    $page = $_SERVER["REQUEST_URI"];
}

if (file_exists('./inc/content/' . $page . '.php')) {
    include './inc/content/' . $page . '.php';
} else {
    include './inc/content/404.php';
}

An REQUEST_URI können Query-Parameter (index.php?foo=bar) hängen. Auch bin ich gerade nicht völlig sicher, ob das Feld "sicher" ist oder ob ein Nutzer dort ein "../" oder ähnliches reinmogeln könnte.
 
Auch bin ich gerade nicht völlig sicher, ob das Feld "sicher" ist oder ob ein Nutzer dort ein "../" oder ähnliches reinmogeln könnte.

@freak131: Bei aller Liebe und praktischer Wertschätzung (die ist wirklich vorhanden! :)): Versuch mal, deinen Posts irgendeinen gewinnbringenden Inhalt zu geben.



Edit: Zum Beispiel das hier. Ist jetzt natürlich wieder alles vorgekaut. :?

PHP:
$whitelist = array('contact', 'home', 'guestbook', 'about');

$page = '404';

if ($_SERVER["REQUEST_URI"] == '/') {
    $page = 'home';
} else {
    $test = trim($_SERVER["REQUEST_URI"], '/');

    if (in_array($test, $whitelist)) {
        $page = $test;
    }
}

include './inc/content/' . $page . '.php';
 
Zuletzt bearbeitet:
nachdem ein teil des Pfades fest gecoded ist, sehe ich momentan keine möglichkeit eine seite unterzujubeln. was sollte also unsicher sein.
liegt die seite startend vom stammverzeichnis nicht in inc/content/ und heist home.php gibt es eine 404

http:// sollte noch abgefangen und überprüft werden.
 
Zurück
Oben