eigene Fehlerseite bei totem Link

Kettu

Mitglied
Hallo Leute,
ich habe eine php-Website in Form einer Tabelle. Sprich Kopf und zwei Spalten darunter, wobei eine dem Untermenü dient und die andere der eigentlichen Seite. Jetzt kommt es doch mal vor, dass ein Link einen Fehler enthält oder die Seite schlicht und einfach nicht existiert (warum auch immer). Jetzt hätte ich es gerne, dass sich in diesem Fall anstelle der Fehlermeldung Marke:

Warning: main(seite.html): failed to open stream: No such file or directory in /usr/local/httpd/htdocs/.../main.php on line 48

Warning: main(): Failed opening 'seite.html' for inclusion (include_path='.:/usr/share/php') in /usr/local/httpd/htdocs/.../main.php on line 48


eine eigene Seite angezeigt wird, wo dann drin steht:

Die Seite wurde nicht gefunden. Bitte sende den Link an den Webmaster dieser Seite. email@website.de

Wie kann ich sowas machen? Ist das überhaupt möglich?

PS: Ich arbeite rein mit dem include-Befehl und ohne Datenbanken, falls das irgendwie wichtig ist.
 
Hallo!

um deine Vorstellung zu realisieren, müsste geprüft werden, ob das "includen" geklappt hat. Da die include-Funktion im Fehlerfall kein "false" (zumindest afaik) sondern eine einfache Fehlermeldung zurückgibt.
Was du machen kannst ist ein @ vor die Include-Funktion zu setzen, so dass die Fehlermeldung unterdrückt wird.
 
ersetz das include gegen das hier:
PHP:
if(!file_exist($datei)) {
    header("location: <404 addresse>");
} else {
    @include($daten);
}
das sollte eigendlich genügen...
 
Original geschrieben von chibisuke
ersetz das include gegen das hier:
PHP:
if(!file_exist($datei)) {
    header("location: <404 addresse>");
} else {
    @include($daten);
}

das sollte eigendlich genügen...
Okay, das klingt ganz gut. In meinem Fall müsste ich dann also
PHP:
<?
if(!file_exist($seite)) {
  header("location: <http://.../404.php>");
}else {
   @include($seite);
}
?>
schreiben? Korrekt? $seite ist nämlich die Variable für die Seiten, die eingebaut werden sollen.
 
Zuletzt bearbeitet:
nicht ganz. Es sind noch zwei Dinge zu beachten:
1) es sollte header("Location: http://..../404.php"); heißen (also ohne <> )
2) die file_exist geht natürlich so nur, wenn die dateien die "included" werden im selben Ordner liegen, wie die PHP-Datei IN die in included wird. ansonsten musst Du noch den Ordner angeben. Klar.
 
Original geschrieben von Moritz123
nicht ganz. Es sind noch zwei Dinge zu beachten:
1) es sollte header("Location: http://..../404.php"); heißen (also ohne <> )
2) die file_exist geht natürlich so nur, wenn die dateien die "included" werden im selben Ordner liegen, wie die PHP-Datei IN die in included wird. ansonsten musst Du noch den Ordner angeben. Klar.
Klar wie Klosbrühe :-) Werd mich dransetzen, wenn der Rest steht. Danke für eure Hilfe!
 
Zurück