bjoern: frames nachladen PHP vs. JavaScript

Hallo,

ich möchte ein Frameset nachladen wen jem. eine Datei die eigentlich in einem iframe liegen sollte direkt aufruft.

Ist hierzu Javascript oder PHP besser geeignet? Ich habe es wie folgt mit PHP versucht:

index.php:

<?php
setcookie("Frameset", "1", time()+7200, "/");
if(!isset($_COOKIE['FrameInhalt'])) $FrameInhalt = "dateien/loadContent.php";
else $FrameInhalt=$_COOKIE['FrameInhalt'];
?>

<iframe name="inhalt" id="inhalt" width="600" height="280" src="<?php print $FrameInhalt; ?>" frameborder="0">
</iframe>

loadcontent.php:

<?php

$DATEI = $PHP_SELF; #Name der PHP-Datei, die das Script enthält
 if($QUERY_STRING != "") $DATEI .= "?".$QUERY_STRING;
 setcookie("FrameInhalt", $DATEI, time()+7200, "/");
 if($_COOKIE['Frameset'] != "1"){
  header("Location:http://index.php");
  exit; #Vorsichtsmaßnahme, damit kein weiterer Code ausgeführt wird
 }

Die Erläuterung hierzu findet ihr unter http://www.drweb.de/php/php_frames.shtml.
Das Problem ist nun aber hierdran, dass über eine .htaccess und mod_rewrite nicht die PHP-Dateien mit Parametern aufgerufen werden, sondern .html dateien vorgegaukelt werden und somit der get-string nicht mit übergeben wird.

FRAGE: Gibt es eine möglichkeit eine datei die per htaccess/modrewrite kontakt.html getauft ist die aber eigentlich loadContent.php?id23&navi=45&content=8697 heißt auf diese art u. weisevernünftig nachzuladen?

WENN NICHT: Wie lässt sich dies am besten mit JS realisieren?

Gruß
Björn

  1. Hallo,

    Nur kurz:

    ich möchte ein Frameset nachladen wen jem. eine Datei die eigentlich in einem iframe liegen sollte direkt aufruft.

    Ist hierzu Javascript oder PHP besser geeignet? Ich habe es wie folgt mit PHP versucht:

    Eine Kombination ist nicht schlecht. Eine PHP-Lösung hängt von Cookies ab. Es besteht keine Notwendigkeit, das Nachladen des Framesets vom Akzeptieren von Cookies abhängig zu machen.

    <?php

    $DATEI = $PHP_SELF; #Name der PHP-Datei, die das Script enthält
    if($QUERY_STRING != "") $DATEI .= "?".$QUERY_STRING;
    setcookie("FrameInhalt", $DATEI, time()+7200, "/");
    if($_COOKIE['Frameset'] != "1"){
      header("Location:http://index.php");

    Was ist http://index.php für eine Adresse? Dort muss eine vollständige Adresse rein.

    exit; #Vorsichtsmaßnahme, damit kein weiterer Code ausgeführt wird
    }

    Die Erläuterung hierzu findet ihr unter http://www.drweb.de/php/php_frames.shtml.

    Diese Lösung ist ziemlich fehlerhaft, siehe </archiv/2003/2/t37440/#m205284>.

    FRAGE: Gibt es eine möglichkeit eine datei die per htaccess/modrewrite kontakt.html getauft ist die aber eigentlich loadContent.php?id23&navi=45&content=8697 heißt auf diese art u. weisevernünftig nachzuladen?

    Du arbeitest mit $PHP_SELF, suchst aber eher $_SERVER['REQUEST_URI'].

    Mathias

  2. Hallo Bjoern,

    Ist hierzu Javascript oder PHP besser geeignet? Ich habe es wie folgt mit PHP versucht:

    Und dir ist klar, dass du damit eine Endlosschleife von Redirects erzeugst, wenn jemand keine Cookies annimmt? So gesehen wäre eine Lösung in JS (im iframe) weniger problematisch:

    <script type="text/javascript">
    if (parent.location.href==self.location.href)
       self.location.href = "index.htm";
    </script>

    Die hätte den einzigen Schönheitsfehler, dass eben _nichts_ passiert, wenn jemand JS deaktiviert hat. Die Weiterleitung auf die Hauptdatei geht dann halt nicht. Aber es gibt wenigstens keine unangenehmen Nebenwirkungen.

    So long,

    Martin

    1. Hi,

      <script type="text/javascript">
      if (parent.location.href==self.location.href)
         self.location.href = "index.htm";
      </script>

      Die hätte den einzigen Schönheitsfehler, dass eben _nichts_ passiert, wenn jemand JS deaktiviert hat.

      Nein - im Gegenteil: wer Javascript aktiviert hat, sieht nicht die Seite, die er aufgerufen hat. Dies finde ich weitaus schlimmer.

      freundliche Grüße
      Ingo