Mit header() frameset austricksen

The_Fang

Mitglied
Hey
Ich bin gerade dabei für ein Schulprojekt ein Loginscript zuschreiben. Ich habe auch schon fast alles fertig gestellt.
Ich habe vorallem ein Problem, das ich gern lösen würde aber nicht weiß wie. An und für sich ist es nur kosmetik.
Also die Seite basiert auf Frames (rechts Menü; links Content). Wenn die Session irgendwann ungültig wird, wird man aufgefordert sich neu einzuloggen. Leider kommt die Aufforderung in dem Teil des Framesets welches die Ungültigkeit als erstes festgestellt hat. Ich würde es aber besser finden, dass die Frames verschwinden und die Aufforderungsseite die einzig geladene Seite ist.
Ist das irgendwie mit der header-Funktion zu bewerkstelligen? Ich würde die ganze Angelegenheit nämlich lieder in PHP als in HTML oder JavaScript lösen.

mfg The_Fang

P.S. Ich hoffe ihr habt verstanden was ich meine.
 
Hi, ja du kannst mit dem Header verschiedene beliebige Seiten aufrufen, also auch eine ohne Frame mit Logineingabe.

Code:
header("Location: login.php");

mfg
 
Wenn ich das mache, wird die Loginseite in dem Frame, welches die Ungültigkeit der Session festgestellt, geladen. Aber ich möchte, dass wenn die Loginseite geladen wird keine Frames mehr da sind.
 
Nein das läst sich mit PHP nicht lösen, benutz einen clientseitigen redirect

ein Location header betrifft immer nur das element das beim laden den header aussendet, das kann ein bild, ein einzelnes Frame, ein ganzes frame set, ein Java Applet, ein Video oder sonst was sein.
Es ist nicht möglich andere elemente damit zu beeinflussen, entsprechend kannst du auch das Frameset nicht auflösen. Du kannst aber einen clientseitigen Redirect benutzen um ins richtige Frame zu gelangen.

btw. @sisela:
Das was du da geschrieben hast ist schon mal inkompatibel zu RFC2616, und sollte so auf keinen fall verwendet werden.
 
Zuletzt bearbeitet:
Also muss ich wohl auf dies zurückgreifen:
Code:
<script language="Javascript">
<!--
 parent.location.href='login.php';
//-->
</script>


@chibisuke
Wie wäre es denn RFC2616 kompatibel?
 
The_Fang hat gesagt.:
Also muss ich wohl auf dies zurückgreifen:
Code:
<script language="Javascript">
<!--
 parent.location.href='login.php';
//-->
</script>
Genau!
@chibisuke
Wie wäre es denn RFC2616 kompatibel?

ein Location header verlangt das eine vollständige URL angegeben wird

Code:
header("Location: http://domain.de/pfad/datei.php");
So währe es korrekt

Originaltext - Auszug aus RFC2616 (HTTP Protokoll v1.1) Abschnitt 14.30
14.30 Location
The Location response-header field is used to redirect the recipient to a location other than the Request-URI for completion of the request or identification of a new resource. For 201 (Created) responses, the Location is that of the new resource which was created by the request. For 3xx responses, the location SHOULD indicate the server's preferred URI for automatic redirection to the resource. The field value consists of a single absolute URI.

Location = "Location" ":" absoluteURI

An example is:

Location: http://www.w3.org/pub/WWW/People.html

Note: The Content-Location header field (section 14.14) differs
from Location in that the Content-Location identifies the original
location of the entity enclosed in the request. It is therefore
possible for a response to contain header fields for both Location
and Content-Location. Also see section 13.10 for cache
requirements of some methods.
 
Das mit dem Header stimmt schon, also mit dem absoluten Pfad und sollte auch so gemacht werden. Aber funktioniert auch nur mit Angabe der Datei, wenn diese im gleichen Verzeichnis liegt. Aber ihr habt vollkommen recht, man sollte schon nach dem Standard gehen. Das ändert aber nix daran, dass der Aufruf dann im gleichen Frame Fenster erscheinen würde, was ja nicht gewollt ist.
Also ziehe ich meinen überschnellen Vorschlag zurück und schliesse mich dem von chibisuke an.

sorry...
 
Zurück