CINXE.COM

Datei mit PHP in Frameset laden

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head><script type="text/javascript" src="/_static/js/bundle-playback.js?v=HxkREWBo" charset="utf-8"></script> <script type="text/javascript" src="/_static/js/wombat.js?v=txqj7nKC" charset="utf-8"></script> <script>window.RufflePlayer=window.RufflePlayer||{};window.RufflePlayer.config={"autoplay":"on","unmuteOverlay":"hidden"};</script> <script type="text/javascript" src="/_static/js/ruffle/ruffle.js"></script> <script type="text/javascript"> __wm.init("https://web.archive.org/web"); __wm.wombat("http://aktuell.de.selfhtml.org:80/artikel/php/php-frames/","20070323120405","https://web.archive.org/","web","/_static/", "1174651445"); </script> <link rel="stylesheet" type="text/css" href="/_static/css/banner-styles.css?v=S1zqJCYt" /> <link rel="stylesheet" type="text/css" href="/_static/css/iconochive.css?v=3PDvdIFv" /> <!-- End Wayback Rewrite JS Include --> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Datei mit PHP in Frameset laden</title> <meta name="description" content="Wie man eine Datei 黚er einen Query String mit PHP in ein Frameset l鋎t."> <meta name="keywords" content="Frameset, PHP, Query String, Perl, Server Side Includes, SSI"> <meta name="author" content="Patrick Canterino, patrick@patshaping.de"> <meta name="DC.Publisher" content="Patrick Canterino, patrickc@selfhtml.org"> <meta name="DC.Date" content="2004-01-24T10:30+01:00"> <meta name="DC.Identifier" content="http://aktuell.de.selfhtml.org/artikel/php/php-frames/"> <meta name="DC.Language" content="de"> <meta name="DC.Rights" content=""> <meta name="SELF.Firstdate" content="2002-03-22T19:00+01:00"> <meta name="SELF.Version" content="5"> <meta name="SELF.Pagetype" content="page"> <link rel="stylesheet" type="text/css" href="https://web.archive.org/web/20070323120405cs_/http://src.selfhtml.org/selfhtml-aktuell-2006-09-05.css" title="SELFHTML-Stylesheet"> <link rel="shortcut icon" type="image/x-icon" href="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/favicon.ico" title="SELFHTML-Icon"> <link rel="top" href="/" title="SELFHTML aktuell"> <link rel="up" href="../" title="Artikel: PHP"> <link rel="search" href="https://web.archive.org/web/20070323120405/http://suche.de.selfhtml.org/" title="SELFHTML-Suche"> <link rel="bookmark" href="/artikel/" title="Artikel"> <link rel="bookmark" href="/links/" title="Linkverzeichnis"> <link rel="bookmark" href="http://suche.de.selfhtml.org/" title="SELFHTML-Suche"> </head> <body class="selfhtml-aktuell selfhtml-aktuell-inhaltsseite"> <table cellpadding="4" cellspacing="0" id="kopf"> <tr><td colspan="2" id="kopf-navigation"><a name="top"><img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/refkap.gif" width="16" height="13" alt="Teil von"></a>&nbsp;<a href="/web/20070323120405/http://aktuell.de.selfhtml.org/">SELFHTML aktuell</a> <img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/refkap.gif" width="16" height="13" alt="Teil von">&nbsp;<a href="/web/20070323120405/http://aktuell.de.selfhtml.org/artikel/">Artikel</a> <img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/refkap.gif" width="16" height="13" alt="Teil von">&nbsp;<a href="/web/20070323120405/http://aktuell.de.selfhtml.org/artikel/php/">PHP</a></td></tr> <tr> <td id="kopf-logo"><img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/logo.gif" width="106" height="109" alt="SELFHTML"></td><td id="kopf-titel"> <h1>Datei mit PHP in Frameset laden</h1> </td></tr> <tr><td id="kopf-links"><img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/dokx.gif" width="30" height="20" alt="Informationsseite"></td><td id="kopf-haupt"> <p> <img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/down.gif" width="14" height="10" alt="nach unten">&nbsp;<a href="#autor">Patrick Canterino</a><br> <img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/down.gif" width="14" height="10" alt="nach unten">&nbsp;<a href="#einleitung">Einleitung</a><br> <img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/down.gif" width="14" height="10" alt="nach unten">&nbsp;<a href="#einfach">Die ganz einfache Variante</a><br> <img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/down.gif" width="14" height="10" alt="nach unten">&nbsp;<a href="#mehrere">Mehrere Frames ver鋘dern</a><br> <img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/down.gif" width="14" height="10" alt="nach unten">&nbsp;<a href="#perl">Es geht auch mit Perl!</a><br> <img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/down.gif" width="14" height="10" alt="nach unten">&nbsp;<a href="#anmerk">Anmerkungen</a> </p> </td></tr> <tr><td colspan="2" id="kopf-down-link"><a href="#bottom"><img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/down.gif" width="14" height="10" alt="nach unten"></a></td></tr> </table> <h2><a name="autor">Patrick Canterino</a></h2> <table class="authortable" cellpadding="4" cellspacing="0"> <tr> <th>E-Mail:</th> <td><img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/mail.gif" width="15" height="10" alt="E-Mail">&nbsp;<a href="https://web.archive.org/web/20070323120405/mailto:patrick@patshaping.de">patrick@patshaping.de</a></td> </tr> <tr> <th>Homepage-URL:</th> <td><img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/de.gif" width="16" height="10" alt="deutschsprachige Seite">&nbsp;<a href="https://web.archive.org/web/20070323120405/http://www.patshaping.de/">http://www.patshaping.de/</a></td> </tr> </table> <p>Bei Fragen zu diesem Beitrag bitte den Autor des Beitrags kontaktieren!</p> <p class="abschnitttrenner"><a href="#top"><img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/up.gif" width="14" height="10" alt="nach oben"></a><a href="#bottom"><img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/down.gif" width="14" height="10" alt="nach unten"></a></p> <h2><a name="einleitung">Einleitung</a></h2> <p>Wie schon in SELFHTML unter <img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/serverdok.gif" width="15" height="10" alt="bereichs黚ergreifende Seite">&nbsp;<a href="https://web.archive.org/web/20070323120405/http://de.selfhtml.org/html/frames/layouts.htm#einsatzmoeglichkeiten">Sinnvolle Einsatzm鰃lichkeiten f黵 Frames</a> erw鋒nt wird, haben Framesets den Nachteil, dass man Unterseiten des Framesets nicht direkt ansteuern kann. Sicherlich, der Besucher kann die entsprechende Seite einfach so aufrufen, aber dann ist er auf dieser Seite &quot;gefangen&quot;, da die Navigaton fehlt.</p> <p>Was liegt also n鋒er, als in das Frameset ein kleines Script einzubauen, dass es erlaubt, das Frameset 黚er einen sogenannten Query String (eine kleine Zeichenkette, die mit einem Fragezeichen an einen URI angeh鋘gt wird) zu ver鋘dern. In diesem Artikel m鯿hte ich demonstrieren, wie Sie das mit <img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/serverdok.gif" width="15" height="10" alt="bereichs黚ergreifende Seite">&nbsp;<a href="https://web.archive.org/web/20070323120405/http://de.selfhtml.org/intro/technologien/php.htm">PHP</a> realisieren k鰊nen.</p> <p>Wenn Sie auf eine <img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/serverdok.gif" width="15" height="10" alt="bereichs黚ergreifende Seite">&nbsp;<a href="https://web.archive.org/web/20070323120405/http://de.selfhtml.org/intro/technologien/javascript.htm">JavaScript</a>-basierte L鰏ung setzen wollen (beispielsweise weil Ihr Homepage-Anbieter PHP nicht erlaubt), k鰊nen Sie auch das Prinzip verwenden, das Martin Wernecke in seinem Artikel <img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/dok.gif" width="15" height="10" alt="Seite">&nbsp;<a href="/web/20070323120405/http://aktuell.de.selfhtml.org/artikel/javascript/dyn-frames/index.htm">Datei dynamisch in Frameset laden</a> beschreibt. Setzen Sie sich ein bisschen mit dem Artikel auseinander, dann werden Sie verstehen, worauf ich hinaus will.<br> Diese Methode hat aber den Nachteil, dass sie vom Browser Ihrer Besucher abh鋘gig ist, d.h. wenn der Besucher JavaScript deaktiviert hat, funktioniert es nicht.</p> <p>Wenn Sie allerdings eher ein Fan von <img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/serverdok.gif" width="15" height="10" alt="bereichs黚ergreifende Seite">&nbsp;<a href="https://web.archive.org/web/20070323120405/http://de.selfhtml.org/cgiperl/intro/perlpc.htm#allgemeines">Perl</a> sind, lesen Sie bitte den kleinen Unterabschnitt <img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/down.gif" width="14" height="10" alt="nach unten">&nbsp;<a href="#perl">Es geht auch mit Perl!</a>. Mit Perl k鰊nen Sie es n鋗lich genauso gut realisieren.</p> <p>Bedenken Sie bitte, dass die hier vorgestellten L鰏ungen nicht <strong>die</strong> L鰏ungen sind, da im Grunde genommen jedes Frameset anders ist. Es wird hier nur die Grundlage vorgestellt. Vor allem sind die L鰏ungen sehr primitiv. Lesen Sie sich deshalb auch die <img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/down.gif" width="14" height="10" alt="nach unten">&nbsp;<a href="#anmerk">Anmerkungen</a> durch, um zu sehen, was Sie unter anderem beachten sollten.</p> <p class="abschnitttrenner"><a href="#top"><img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/up.gif" width="14" height="10" alt="nach oben"></a><a href="#bottom"><img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/down.gif" width="14" height="10" alt="nach unten"></a></p> <h2><a name="einfach">Die ganz einfache Variante</a></h2> <p>Die erste Variante, die ich hier demonstrieren m鯿hte, kann <strong>einen</strong> Frame ver鋘dern. Das reicht in den meisten F鋖len vollkommen aus.</p> <p>Wir gehen von diesem einfachen Frameset aus:</p> <pre> &lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Frameset//EN&quot;&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;Frameset&lt;/title&gt; &lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=iso-8859-1&quot;&gt; &lt;/head&gt; &lt;frameset cols=&quot;20%,80%&quot;&gt; &lt;frame src=&quot;links.htm&quot; name=&quot;links&quot;&gt; &lt;frame src=&quot;rechts.htm&quot; name=&quot;rechts&quot;&gt; &lt;noframes&gt; &lt;body&gt; &lt;p&gt;Ihr Browser unterstuetzt keine Frames!&lt;/p&gt; &lt;/body&gt; &lt;/noframes&gt; &lt;/frameset&gt; &lt;/html&gt; </pre> <p>Es besteht aus einem linken und einem rechten Frame. Im linken befindet sich die Navigation und im rechten die Texte etc.</p> <p>Das Ziel ist es nun, den rechten Frame 黚er einen Query String zu ver鋘dern. Eine entsprechende Adresse w黵de dann so aussehen:</p> <p><var>http://www.meineseiten.de/meinordner/?Neue Seite</var></p> <p>Der Query String 鋘dert also im Verzeichnis-Index des Ordners <var>meinordner</var> im rechten Frame die urspr黱gliche Datei durch <var>neueseite</var> ersetzen.<br> Das PHP-Script muss also den Query String auslesen und die Frame-Definition entsprechend 鋘dern. Das PHP-Script kann dann so aussehen:</p> <pre> &lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Frameset//EN&quot;&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;Frameset&lt;/title&gt; &lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=iso-8859-1&quot;&gt; &lt;/head&gt; &lt;frameset cols=&quot;20%,80%&quot;&gt; &lt;frame src=&quot;links.htm&quot; name=&quot;links&quot;&gt; &lt;?php $arg = $_SERVER['QUERY_STRING']; if($arg == &quot;&quot;) $arg = &quot;rechts.htm&quot;; print &quot;&lt;frame src=\&quot;$arg\&quot; name=\&quot;rechts\&quot;&gt;&quot;; ?&gt; &lt;noframes&gt; &lt;body&gt; &lt;p&gt;Ihr Browser unterstuetzt keine Frames!&lt;/p&gt; &lt;/body&gt; &lt;/noframes&gt; &lt;/frameset&gt; &lt;/html&gt; </pre> <h3 class="xpl">Erl鋟terung:</h3> <p>Das PHP-Script kopiert zun鋍hst den Query String in die Variable <code>$arg</code>, um die sp鋞ere Arbeit damit zu vereinfachen. Anschlie遝nd wird gepr黤t, ob er leer ist. Sollte das zutreffen, wird der Dateiname, der eigentlich in den rechten Frame geh鰎t, in die Variable <code>$arg</code> kopiert. Danach schreibt das Script die Definition f黵 den rechten Frame, wobei <code>$arg</code> die neue Datei f黵 den Frame ist.</p> <p>Klicken Sie auf den untenstehenden Link, um das fertige Beispiel anzuzeigen.</p> <p><img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/dokf.gif" width="15" height="10" alt="Popup-Seite">&nbsp;<a href="beispiel/php/einfach/index.htm" target="_blank">Anzeigebeispiel: So sieht's aus</a></p> <p class="abschnitttrenner"><a href="#top"><img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/up.gif" width="14" height="10" alt="nach oben"></a><a href="#bottom"><img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/down.gif" width="14" height="10" alt="nach unten"></a></p> <h2><a name="mehrere">Mehrere Frames ver鋘dern</a></h2> <p>Doch was w鋜e, wenn Sie in Ihrem Frameset mehrere Frames auf einmal 鋘dern wollen?<br> Keine Angst, hier geht es nicht um die altbekannte Geschichte <img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/serverdok.gif" width="15" height="10" alt="bereichs黚ergreifende Seite">&nbsp;<a href="https://web.archive.org/web/20070323120405/http://de.selfhtml.org/javascript/beispiele/zweiframes.htm">Zwei Frames gleichzeitig 鋘dern</a> (ich verwende aber das Beispiel-Frameset)!<br> Nein, ich will demonstrieren, dass man auf diese Weise (oder auf eine 鋒nliche) auch mehrere Frames gleichzeitig 鋘dern kann.</p> <p>Daf黵 machen wir uns die Methode, in der ein Formular normalerweise seine Daten 黚ermittelt zunutze, daher h鋘gen wir die Framenamen mit <code>&amp;</code>-Zeichen und die entsprechende Datei (ohne Extension) mit einem Gleichheitszeichen an den Framenamen.<br> Ein entsprechender Aufruf k鰊nte dann so aussehen:</p> <p><var>http://www.meineseiten.de/meinordner/?Frame 1=Datei 1&amp;Frame 2=Datei 2</var></p> <p>Dieses Mal gehen wir von diesem Frameset aus:</p> <pre> &lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Frameset//EN&quot;&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;Zwei Frames gleichzeitig &amp;auml;ndern&lt;/title&gt; &lt;/head&gt; &lt;frameset cols=&quot;180,*&quot;&gt; &lt;frame src=&quot;zweiframes_links.htm&quot; name=&quot;links&quot;&gt; &lt;frameset rows=&quot;180,*&quot;&gt; &lt;frame src=&quot;zweiframes_to.htm&quot; name=&quot;oben&quot;&gt; &lt;frame src=&quot;zweiframes_tu.htm&quot; name=&quot;unten&quot;&gt; &lt;/frameset&gt; &lt;/frameset&gt; &lt;/html&gt; </pre> <p>Das Ziel ist es jetzt, die Defintionen f黵 die Frames &quot;oben&quot; und &quot;unten&quot; von PHP generieren zu lassen.<br> Um an die Information zu kommen, welche Datei in welchen Frame geh鰎t, muss der Query String auseinandergenommen werden. Das erledigt PHP automatisch f黵 Sie.</p> <p>Das fertige PHP-Script kann dann beispielsweise so aussehen:</p> <pre> &lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Frameset//EN&quot;&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;Zwei Frames gleichzeitig &amp;auml;ndern&lt;/title&gt; &lt;/head&gt; &lt;frameset cols=&quot;180,*&quot;&gt; &lt;frame src=&quot;zweiframes_links.htm&quot; name=&quot;links&quot;&gt; &lt;frameset rows=&quot;180,*&quot;&gt; &lt;?php $oben = $_GET['oben']; $unten = $_GET['unten']; if($oben == &quot;&quot;) $oben = &quot;zweiframes_to.htm&quot;; if($unten == &quot;&quot;) $unten = &quot;zweiframes_tu.htm&quot;; print &quot;&lt;frame src=\&quot;$oben\&quot; name=\&quot;oben\&quot;&gt;\n&quot;; print &quot; &lt;frame src=\&quot;$unten\&quot; name=\&quot;unten\&quot;&gt;&quot;; ?&gt; &lt;/frameset&gt; &lt;/frameset&gt; &lt;/html&gt; </pre> <h3 class="xpl">Erl鋟terung:</h3> <p>Das Script liest zun鋍hst die Werte der Parameter aus dem superglobalen Array <code>$_GET</code> aus. Dann pr黤t es, ob die so entstandenen Variablen <code>$oben</code> und <code>$unten</code> leer sind. Sollte eine der beiden (oder sogar beide) leer sein, schreibt es die Standard-Dateinamen (wieder ohne Datei-Extension) in diese Variablen. Anschlie遝nd legt es noch die Frame-Definition an.<br> Die Leerzeichen zwischen <code>&quot;</code> und <code>&lt;frame src=\&quot; ...</code> haben lediglich den Zweck, dass der fertige Quell-Code ordentlich aussieht.</p> <p>Hier nun das fertige Beispiel:</p> <p><img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/dokf.gif" width="15" height="10" alt="Popup-Seite">&nbsp;<a href="beispiel/php/mehrere/index.htm" target="_blank">Anzeigebeispiel: So sieht's aus</a></p> <p class="abschnitttrenner"><a href="#top"><img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/up.gif" width="14" height="10" alt="nach oben"></a><a href="#bottom"><img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/down.gif" width="14" height="10" alt="nach unten"></a></p> <h2><a name="perl">Es geht auch mit Perl!</a></h2> <p>Das alles l鋝st sich nat黵lich auch mit Perl realisieren. Wir setzen hier das Script in Verbindung mit einem <img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/serverdok.gif" width="15" height="10" alt="bereichs黚ergreifende Seite">&nbsp;<a href="https://web.archive.org/web/20070323120405/http://de.selfhtml.org/cgiperl/intro/ssi.htm">Server Side Include</a> ein, da es irgendwie von den Dateinamen her besser aussieht.<br> Bitte haben Sie Verst鋘dnis, dass ich hier nur beschreibe, wie das <img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/up.gif" width="15" height="10" alt="nach oben">&nbsp;<a href="#einfach">erste Beispiel</a> in Perl und SSI aussehen w黵de. Auf meiner Homepage finden Sie einen kleinen Artikel namens <img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/de.gif" width="16" height="10" alt="deutschsprachige Seite">&nbsp;<a href="https://web.archive.org/web/20070323120405/http://www.patshaping.de/redirector/redirect.php?page=perl-frames">Mehrere Dateien mit Perl in Frameset laden</a>, der beschreibt, wie Sie auch mehrere Frames dynamisch mit Perl ver鋘dern k鰊nen.</p> <p>Wir gehen wieder von unserem ersten Frameset aus:</p> <pre> &lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Frameset//EN&quot;&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;Frameset&lt;/title&gt; &lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=iso-8859-1&quot;&gt; &lt;/head&gt; &lt;frameset cols=&quot;20%,80%&quot;&gt; &lt;frame src=&quot;links.htm&quot; name=&quot;links&quot;&gt; &lt;frame src=&quot;rechts.htm&quot; name=&quot;rechts&quot;&gt; &lt;noframes&gt; &lt;body&gt; &lt;p&gt;Ihr Browser unterstuetzt keine Frames!&lt;/p&gt; &lt;/body&gt; &lt;/noframes&gt; &lt;/frameset&gt; &lt;/html&gt; </pre> <p>Nehmen wir an, der rechte Frame soll mit Hilfe eines Query Strings ver鋘dert werden. Also muss die Definition des linken Frames durch ein SSI ersetzt werden.<br> Das s鋒e dann in etwa so aus:</p> <h3 class="xmp">Datei <var>index.shtml</var></h3> <pre> &lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Frameset//EN&quot;&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;Frameset&lt;/title&gt; &lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=iso-8859-1&quot;&gt; &lt;/head&gt; &lt;frameset cols=&quot;20%,80%&quot;&gt; &lt;frame src=&quot;links.htm&quot; name=&quot;links&quot;&gt; &lt;!--#exec cgi=&quot;/cgi-bin/dynaframe.pl&quot; --&gt; &lt;noframes&gt; &lt;body&gt; &lt;p&gt;Ihr Browser unterstuetzt keine Frames!&lt;/p&gt; &lt;/body&gt; &lt;/noframes&gt; &lt;/frameset&gt; &lt;/html&gt; </pre> <p>Das Server Side Include ruft nun das Perl-Script <var>dynaframe.pl</var> auf.<br> Dieses Script enth鋖t den folgenden Code:</p> <h3 class="xmp">Datei <var>dynaframe.pl</var></h3> <pre> #!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); my $arg = $ENV{'QUERY_STRING'}; $arg = &quot;rechts.htm&quot; if($arg eq &quot;&quot;); print &quot;Content-type: text/html\n\n&quot;; print &quot;&lt;frame src=\&quot;$arg\&quot; name=\&quot;rechts\&quot;&gt;&quot;; </pre> <p>Das Script kopiert zun鋍hst den Query String in die Variable <code>$arg</code>. Anschlie遝nd pr黤t es, ob die Variable <code>$arg</code> (also der Query String) leer ist und schreibt in diese Variable die Standarddatei f黵 diesen Frame. Nun sendet das Script die neue Frame-Definiton an den Browser, wobei <code>$arg</code> der Name der Datei ist.</p> <p>Hier nun das komplette Beispiel:</p> <p><img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/dokf.gif" width="15" height="10" alt="Popup-Seite">&nbsp;<a href="beispiel/perl/index.htm" target="_blank">Anzeigebeispiel: So sieht's aus</a></p> <p class="abschnitttrenner"><a href="#top"><img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/up.gif" width="14" height="10" alt="nach oben"></a><a href="#bottom"><img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/down.gif" width="14" height="10" alt="nach unten"></a></p> <h2><a name="anmerk">Anmerkungen</a></h2> <p>Wenn Sie eine 鋖tere Version von PHP (鋖ter als <var>4.1.0</var>) verwenden, die nicht mit den &quot;Superglobals&quot; <code>$_GET</code> und <code>$_SERVER</code> zurecht kommt, verwenden Sie stattdessen <code>$HTTP_GET_VARS</code> und <code>$HTTP_SERVER_VARS</code>.</p> <p>Alle hier von mir aufgef黨rten Beispiele haben einen gro遝n Nachteil: Wenn ein Besucher aus irgendeinem Grund eine Datei in das Frameset laden will, die nicht existiert, dann schreibt das PHP- bzw. Perl-Script brav einen Verweis auf die nicht vorhandene Datei, und der Besucher bekommt einen wundersch鰊en HTTP Error 404 &quot;URL not found&quot;.<br> Es kann allerdings auch passieren, dass eine Datei angegeben wird, die da eigentlich gar nicht hin darf, beispielsweise die Navigation oder komplett fremde Seiten, die 黚erhaupt nichts mit Ihrer Seite zu tun haben.<br> Dem k鰊nen Sie vorbeugen, indem Sie beispielsweise zuerst mit <code>if()</code> alle verschiedenen M鰃lichkeien abfragen, und wenn dann keine Entsprechung gefunden wurde, lassen Sie einfach die Standard-Datei ins Frameset schreiben.<br> Sie k鰊nen andererseits auch mit den PHP-Funktionen <code>file_exists()</code> oder <code>is_file()</code> pr黤en, ob die angeforderte Datei wirklich exisitiert, und, falls nicht, entsprechend die Standard-Datei laden. Bedenken Sie, dass <code>file_exists()</code> und <code>is_file()</code> wirkungslos sind, wenn es sich bei der angegebenen Datei um einen Alias handelt, oder sich die Datei in einem Alias-Verzeichnis befindet.</p> <p>Ein entsprechendes Script kann zum Beispiel so aussehen (als Grundlage dient wieder das Frameset aus dem <img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/up.gif" width="15" height="10" alt="nach oben">&nbsp;<a href="#einfach">ersten Beispiel</a>):</p> <pre> &lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Frameset//EN&quot;&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;Frameset&lt;/title&gt; &lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=iso-8859-1&quot;&gt; &lt;/head&gt; &lt;frameset cols=&quot;20%,80%&quot;&gt; &lt;frame src=&quot;links.htm&quot; name=&quot;links&quot;&gt; &lt;?php $arg = $_SERVER['QUERY_STRING']; if(!$arg || !file_exists($arg)) $arg = &quot;rechts.htm&quot;; print &quot;&lt;frame src=\&quot;$arg\&quot; name=\&quot;rechts\&quot;&gt;&quot;; ?&gt; &lt;noframes&gt; &lt;body&gt; &lt;p&gt;Ihr Browser unterstuetzt keine Frames!&lt;/p&gt; &lt;/body&gt; &lt;/noframes&gt; &lt;/frameset&gt; &lt;/html&gt; </pre> <h3 class="xpl">Erl鋟terung:</h3> <p>Das Script kopiert zun鋍hst den Query String in die Variable <code>$arg</code>. Anschlie遝nd wird gepr黤t, ob der Query String nicht leer ist und ob die angeforderte Datei 黚erhaupt existiert. Wenn der Query String leer ist und die angeforderte Datei nicht vorhanden ist, wird in <code>$arg</code> der Pfad zur Standarddatei angegeben. Zum Schluss wird noch die Frame-Definition ausgegeben.</p> <p id="fuss-up-link"><a href="#top"><img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/up.gif" width="14" height="10" alt="nach oben"></a></p> <p id="fuss-navigation"><img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/refkap.gif" width="16" height="13" alt="Teil von">&nbsp;<a href="/web/20070323120405/http://aktuell.de.selfhtml.org/">SELFHTML aktuell</a> <img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/refkap.gif" width="16" height="13" alt="Teil von">&nbsp;<a href="/web/20070323120405/http://aktuell.de.selfhtml.org/artikel/">Artikel</a> <img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/refkap.gif" width="16" height="13" alt="Teil von">&nbsp;<a href="/web/20070323120405/http://aktuell.de.selfhtml.org/artikel/php/">PHP</a></p> <p><a name="bottom">&copy; 2006</a> <img src="https://web.archive.org/web/20070323120405im_/http://src.selfhtml.org/serverdok.gif" width="15" height="10" alt="bereichs黚ergreifende Seite">&nbsp;<a href="https://web.archive.org/web/20070323120405/http://www.selfhtml.org/de.impressum.html">Impressum</a></p> </body> </html> <!-- FILE ARCHIVED ON 12:04:05 Mar 23, 2007 AND RETRIEVED FROM THE INTERNET ARCHIVE ON 10:08:48 Dec 18, 2024. JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE. ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C. SECTION 108(a)(3)). --> <!-- playback timings (ms): captures_list: 0.695 exclusion.robots: 0.033 exclusion.robots.policy: 0.02 esindex: 0.012 cdx.remote: 15.771 LoadShardBlock: 252.806 (3) PetaboxLoader3.datanode: 169.075 (6) PetaboxLoader3.resolve: 160.487 (3) load_resource: 136.646 -->

Pages: 1 2 3 4 5 6 7 8 9 10