Seite in ein Frame "umleiten"?

mailworm

Grünschnabel
Hallo zusammen,

mir stellt sich gerade folgendes Problem, doch leider komme ich zu keiner vernünftigen Lösung:

Ich habe eine Webseite die mit Frames arbeitet.. Alle Seiten im Frame "content" prüfen zu Beginn, ob sie in diesem Frame geladen sind/ werden.. Ist dies nicht der Fall, dann wird die Hauptseite geladen.

Ich hätte nun gern, dass der Besucher dann zwar zur Haupseite gelangt, im dortigen "content"-Frame aber die Seite, die er direkt aufrufen wollte angezeigt wird.

Bsp.:

User ruft Seite http://www.domain.de/content.php?var1=test&var2=blablabla auf.

Da die Seite direkt geladen wird, setzt Weiterleitung an http://www.domain.de ein.

Jetzt soll "content.php?var1=test&var2=blablabla" dort im Frame "content" angezeigt werden und nicht (!) die eigentliche "content"-Startseite.


Vielen Dank vorab für die Hilfe!

Thomas
 
hmmm

ich könnte mir vorstellen das man das im Frameset über das GET Array definieren kann welche Seite geladen werden.

Kannst da ja mal en bisschen rumtüfteln aber meiner Meinung nach dürfte dies nicht das große Problem sein
 
Hallo...

probiers mal so:
in content.php
PHP:
<script type="text/javascript">
<?php
echo 'QUERY_STRING="'.$_SERVER['QUERY_STRING'].'";';
?>
if(self==top){document.location="index.php?"+QUERY_STRING;}
</script>

index.php
PHP:
<html>
<head>
<title>Test</title>
</head>
<frameset cols="100,*">
 <frame src="blubb.php">
 <frame src="content.php?<?php echo $_SERVER['QUERY_STRING'];?>"name="content">
</frameset>
<noframes>:P</noframes>
</html>

in content PHP den QUERY_STRING abfragen und als JS-Variabe speichern.
Beim Frameset-Nachladen den QUERY_STRING an die index.php weitergeben und dort beim content-Frame mit ins src-Attribut schreiben. Fertig.(solange JS an ist :-))

Es ginge auch komplett mit JS... ist so aber weniger umständlich...und schliesslich ist hier ja das PHP-Forum;)
 
klingt gut, doch ich hab' da was vergessen..

hi fatalus,

danke für deine hilfe. das sollte funktionieren. ich habe dabei jedoch noch ein problem: es ist nicht nur eine seite, die ins frame umgeleitet werden soll.

ich habe z.b. außer der "content.php" noch eine "content_2.php" und so weiter.. mit query_string bekomme ich ja eben nur diesen, ich benötige aber auch noch den namen der datei, die direkt an statt im frame aufgerufen wurde.

wie geht das bitte?

mfg & schönen samstag
mailworm

p.s. absolutes sahnehäubchen wäre dann noch, wenn im browser nichts weiter steht als "www.meine-domain.de" oder maximal "www.meine-domain.de/index.php"..
 
Du willst mehr doch nicht in allem Ernst erzählen, das du nicht weisst, wie du an den Namen der aktuellen Datei kommst?

Versuchs mal mit $_SERVER['REQUEST_URI'](incl. QUERY-STRING) oder $_SERVER['PHP_SELF'](Dateiname pur) ... ich empfehle dir da einen Blick in die PHP-Doku ;)

Das würde dann so aussehen:
In content.php
Code:
<script type="text/javascript">
<?php
echo 'QUERY_STRING="'.rawurlencode($_SERVER['REQUEST_URI']).'";';
?>
if(self==top){document.location="index.php?"+QUERY_STRING;}
</script>

...
index.php
Code:
<html>
<head>
<title>Test</title>
</head>
<frameset cols="100,*">
<frame src="blubb.php">
<frame src="<?php echo rawurldecode($_SERVER['QUERY_STRING']);?>"name="content">
</frameset>
<noframes>:P</noframes>
</html>

für das Sahnehäubchen könntest du dir mit einem Formular behelfen, was per JS automatisch gePOSTet wird:
In content.php
Code:
<form name="redirect"action="http://www.m213.de"style="display:none"method="POST">
<input type="hidden"name="url"value="<?php echo $_SERVER['PHP_SELF'];?>">
<?php
foreach($_GET as $key=>$value)
    {
    echo '<input type="hidden"name="'.$key.'"value="'.$value.'">';
    }
?>
</form>
<script type="text/javascript">
<!--
if(self==top){document.redirect.submit();}
//-->
</script>

...
index.php
Code:
<?php
$contenturl='content.php';
if(isset($_POST['url']))
    {
    $contenturl=$_POST['url'].'?';
    foreach($_POST as $key=>$value)
        {
        if($key!='url')
            {
            $contenturl.=$key.'='.rawurlencode($value).'&';
            }
        }
    }
?>
<html>
<head>
<title>Test</title>
</head>
<frameset cols="100,*">
<frame src="blubb.php">
<frame src="<?php echo $contenturl; ?>"name="content">
</frameset>
<noframes>:P</noframes>
</html>
 
Zurück