Johannes Völlinger: PHP und Frames

Hi!

Haben nen kleines Problem mit meinem passwortgeschützten Bereich in dem ich einen oberen Navigationsframe benutze. Nach ner Stunde oder 10 Minuten Inaktivität wird beim ansteuern der nächsten Seite über Header zur Loginseite weitergeleitet, um die Userdaten erneut einzugeben.
Soweit so gut, doch die Loginseite wird im Hauptframe angezeigt und dadurch das komplette Frameset, beim erneuten einloggen, in den Hauptframe geladen (also ist die Navigationsleiste jetzt zweimal vorhanden)! Meine Frage: Wie schaffe ich es mit Hilfe von PHP (über Header(Location: ...) ) die Loginseite alleine anzuzeigen ohne Frames? Dies soll aber OHNE Hilfe von Javascript und automatisch geschehen (also kein Link, den man vorher klicken muss). Hab zuerst an nen Meta "refresh" Tag gedacht, aber der unterstützt scheinbar nicht die direkte Ansteuerung von Frames. :-(

Hat wer ne Idee? :-/

Vielen Dank schonmal im vorraus!
Johannes

  1. Hi!

    Welche Seite wird denn bei Dir in den zwecks des ursprünglichen Login's in den "Hauptframe" geladen? Lade die wieder dorthin.

    Generell: PHP weiss nichts von Framesets. Es muss also ansonsten etwas mit Javascript sein. Ich glaube nicht, das ein:

    <base target="_top">
    und dann die übliche Weiterleitung via meta-refresh funktionieren wird.

    Aber versuchen kannst Du es ja.

    Ansonsten bleibt Dir:

    JavaScript
    die Seite ohne Frames
    die richtige Seite im richtigen frame laden

    fastix

    1. Hallo,

      mal was Basisorientiertes: :-))

      Der Server entscheidet, welche Angebote zum Draufklicken er dem Browser(-benutzer) macht. Der Browser(-benutzer) entscheidet, welches Angebot er annimtt und in welchem Fenster er das darstellt (in dem angebotenen oder in einem neuen). Der Server entscheidet, welche Inhalte er stattdessen sendet. Auf jeden Klick kann er genau eine Antwort schicken. Um das 'etwas' aufzuweichen, hat man die Frames geschaffen. Da schickt der Derver keine "Antwort", sondern neue Anfragen und vranlasst den Client i.d.R. ohne Eingriffsmöglichkeit, nochmals nachzufragen. Der Client benutzt nun die vom Server vorgeschlagenen Fenster als Empfangsort für die angeforderten Frames.

      Wenn man in einem Frame erneut eine Anfrage startet (auch durch Redirect), dann muss man eben dafür sorgen, dass diese im "_parent"-Frame angezeigt wird. Das bedeutet aber auch, dass der Client schon vorher wissen muss, in welchem Frame (Fenster) er denn bitte diese Anfrage demnächst anzeigen soll.

      Beim Request wird im Client ein virtual Port geöffnet und hinter dem Port die Destination eingetragen. Der Port wird mit der Anfrage und dem Namen der Domain an die IP, und den Port des Servers gesendet. Der leitet das der entsprechenden Ressource zu. Die Ressource antortet lediglich an die IP des Fragestelles unter Mitsendung des (virtuellen)Ports. Der Fragesteller (Client) nimmt die Antwort aufgrund der IP an, leitet sie an den Prozess mit der passenden Portnummer weiter und dieser sortiert die Antwort in die Destination. Darauf hast Du keinerlei Einfluß mehr. Diese ganze Kette muss also schon relativ früh bekannt sein.

      Dein  Browser "beantragt" bei der entsprechenden Instanz des Client-OS für JEDE Anfrage einen neuen Port. Musst Du Dir einfach mal auf dem Server anschauen. Dort kannst Du das ja mittels Interface (PHP) visualisieren lassen und die Info an den Client zurückschicken. Nur wenn der Client einen Port vollständig schließen konnte, kann er ihn wiederbenutzen. Für die Ports gibt ein Timeout, dass man für den Fall der Nutzung durch den Browser auch irgendwie einstellen konnte, ich habe leider vergessen, wie.

      Wäre für Testzwecke ganz witzig, die Port-Timeout auf 20sec herunterschrauben zu können.

      Liebe Grüße aus http://www.braunschweig.de

      Tom

      --
      Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Mut die, eigene zu machen.