Error 404

Ich habe per .htaccess die Fehlerseite als ‚error.php‘ definiert.
Die Seite gibt zunächste die Schrift 'Fehler 404- Falsche URL … ’ aus.
im Hintergrund wird per Mail Funktion folgender Bericht an mich per Email geschickt:
Betreff:404 Error.
Fehler beim Aufruf von: http: …

Dabei gibt es ein Problem: Es steht immer ‚error.php‘ als Fehlerseite da.
Gewünscht wäre aber das dort die fehlerhafte URL steht: z.B.:
http://www.[…].de/diese_seite_gibts_nicht.html

Also entweder die Adresse, des zu letzt aufgerufenen Links oder die der falsch eingegebenen URL und nicht ‚error.php‘.
Was habe ich falsch gemacht?
Derzeitiger PHPcode:
$mailtext=„Fehler beim Aufruf von: http://“.$_SERVER[HTTP_HOST]."".$_SERVER[PHP_SELF]."";

____________________

  1. Problem: Bei einem Fehlerhaften Link sieht man die Errorseite inhalb einer Frameseite (auf der Main Frame).
    Gibt man eine falsche URL ein, Sieht man sie als ganze Seite.

Die Errorseite leitet automatisch nach 5sek IMMER auf main.php
Sie sollte aber auf index.php weiterleiten, falls die Datei nicht innerhalb einer Frame angezigt wird.

Alternativ könnte sie auch immer auf index.php leiten, wenn die Weiterleitung nicht wie sie es Standartgemäs tut die aktuelle Frame ersetz, sondern die gesammte Webseite (Frameseite)
Wie richtet man so eine Frameseite ein?

Dabei gibt es ein Problem: Es steht immer ‚error.php‘ als
Fehlerseite da.
Gewünscht wäre aber das dort die fehlerhafte URL steht: z.B.:
www.[…].de/diese_seite_gibts_nicht.html

Also entweder die Adresse, des zu letzt aufgerufenen Links
oder die der falsch eingegebenen URL und nicht ‚error.php‘.
Was habe ich falsch gemacht?
Derzeitiger PHPcode:
$mailtext="Fehler beim Aufruf von:

//".$_SERVER[HTTP_HOST]."".$_SERVER[PHP_SELF]."";

$PHP_SELF ist immer die aktuelle Seite. Du musst den referrer ausgeben
$_SERVER[‚HTTP_REFERRER‘];
nicht alle Browser bzw Firewalls lassen das aber auch zu…

  1. Problem: Bei einem Fehlerhaften Link sieht man die
    Errorseite inhalb einer Frameseite (auf der Main Frame).
    Gibt man eine falsche URL ein, Sieht man sie als ganze Seite.
    Die Errorseite leitet automatisch nach 5sek IMMER auf main.php
    Sie sollte aber auf index.php weiterleiten, falls die Datei
    nicht innerhalb einer Frame angezigt wird.

warum leitet sie dahin und wie?
wenn Du unterscheidungen zwischen Frame und Fenster komplett machen willst -> JavaScript. Clientseitig gehts wohl kaum anders.

Alternativ könnte sie auch immer auf index.php leiten, wenn
die Weiterleitung nicht wie sie es Standartgemäs tut die
aktuelle Frame ersetz, sondern die gesammte Webseite
(Frameseite)
Wie richtet man so eine Frameseite ein?

hä?

$_SERVER[‚HTTP_REFERRER‘];

Ich hab $_SERVER[„REQUEST_URI“] genommen(durch Zufall drauf gestossen), damit umgehe ich das referer Problem mit Firewalls.

Zu der Weiterleitung:

index.php hat drei Frames nach folgendem Schema:

ttttttttttt
n mmmmmmmmm
n mmmmmmmmm
n mmmmmmmmm
n mmmmmmmmm

(n=navframe; t=topframe; m=mainframe)

Leite ich auf index.php weiter, wird bei einem fehlerhaften Link auf der mainframe index.php geladen.
Also der oben mit m-gekennzeichnete Bereich wird nochmal in 3 Frames unterteilt:

ttttttttttt
n ttttttttt
n n mmmmmmm
n n mmmmmmm
n n mmmmmmm

Gibt einer eine falsche url ein, ist die weiterleitung auf index.php korrekt.

Kann man es nicht so einrichten, dass nicht nur die aktuelle Frame (mainframe), sondern alle Frames (top,nav,mainframe) dursch die URL ‚index.php‘ „ersetzt“ werden?

again…

$_SERVER[‚HTTP_REFERRER‘];

Ich hab $_SERVER[„REQUEST_URI“] genommen(durch Zufall drauf
gestossen), damit umgehe ich das referer Problem mit
Firewalls.

falsch - wenn die Firewalls den Referer blocken, dann blocken sie ihn, egal ob Du mit REQUEST_URI arbeitest oder mit HTTP_REFERRER

Zu der Weiterleitung:

index.php hat drei Frames nach folgendem Schema:

ttttttttttt
n mmmmmmmmm
n mmmmmmmmm
n mmmmmmmmm
n mmmmmmmmm

(n=navframe; t=topframe; m=mainframe)

schon mal an ein frameless design gedacht? gerade php bietet sich dafür doch an…

Leite ich auf index.php weiter, wird bei einem fehlerhaften
Link auf der mainframe index.php geladen.
Also der oben mit m-gekennzeichnete Bereich wird nochmal in 3
Frames unterteilt:

ttttttttttt
n ttttttttt
n n mmmmmmm
n n mmmmmmm
n n mmmmmmm

Gibt einer eine falsche url ein, ist die weiterleitung auf
index.php korrekt.

Kann man es nicht so einrichten, dass nicht nur die aktuelle
Frame (mainframe), sondern alle Frames (top,nav,mainframe)
dursch die URL ‚index.php‘ „ersetzt“ werden?

framebrecher in die Fehlerseite einbinden -> JavaScript.