Sven Rautenberg: Endlosschleife bei 'refresh' (HTML) versus 'include' (PHP)

Beitrag lesen

Moin!

Böse, böse Endlosschleife. Bitte, wer hat den Zaunpfahl?

<fuchtel> <fuchtel> BUMM! Leichte Schläge auf den Hinterkopf erhöhen das Denkvermögen. Reicht das so? ;)

In einer HTML-Datei ist eine Weiterleitung (refresh) eingebaut. Die Weiterleitung ruft eine PHP-Datei auf. Die PHP-Datei baut mit include() die oben genannte HTML-Datei ein.

Die PHP-Datei hört dann aber nicht mehr auf, den Refresh-Befehl der eingebundenen HTML-Datei auszuführen. Mit anderen Worten: Es entsteht eine Endlosschleife. HTML ruft PHP, PHP ruft HTML, HTML ruft PHP....

ICH WILL ABER KEINE ENDLOSSCHLEIFE.

Niemand will Endlosschleifen. :)

Warum will ich die Umleitung überhaupt: Ich möchte, wenn ein Nutzer eine Unterseite aufruft, dass auch die dazugehörige Navigation geladen wird. Ruft also jemand text.htm auf, dann soll über navi.php die Datei text.htm an einer bestimmten Stelle einer Tabelle in die Datei navi.php eingebaut werden (Navi.php enhält die Navigation.)

Irgendwo ist ein Denkfehler - entweder jetzt bei mir, weil du nicht die ganze Story erzählt hast, oder bei dir.

Basierend auf dem, was du erzählst: Jemand ruft die text.html auf. Dann kriegt er folgenden Dateiinhalt:
<!DOCTYPE...>
<html>
<head>
<title>Eine Textseite</title>
<meta refresh>
<meta encoding>
</head>
<body>
blah
</body>
</html>

Damit wird er dann zu einer PHP-Datei umgeleitet, die (um deine Funktionalität zu bieten) mindestens mal so aussehen muß:
<!DOCTYPE...>
<html>
<head>
<title>Eine PHP-Seite</title>
<meta encoding>
</head>
<body>
<table>
<tr>
<td>
Hier die Navigation
</td>
<td>
<?

Content einbinden

include("text.html");
?>
</td>
</tr>
</table>
</body>
</html>

Wenn ich das mal überschlagsmäßig betrachte, dann kommt dabei Müll raus, weil du eine komplette HTML-Seite in eine komplette HTML-Seite einbaust.

So, und jetzt kommt der Punkt, wo irgendjemand den Denkfehler macht: Entweder hast du deine entstehende Seite noch nicht auf Syntax geprüft, dann würdest du sehen, daß das kein korrektes HTML ist, weil sich in der Tabellenzelle eben mehr befindet als nur der Inhalt aus dem <body>, oder du hast eine Includefunktion geschrieben, die den Inhalt des Bodys aus der Textseite herausfiltert - dann sollte dir das Meta-Refresh aber doch eigentlich keine Probleme machen, weil es in der PHP-Seite garnicht auftaucht, oder?

- Sven Rautenberg