Problem mit include () Befehl

THX,
das war gar nicht gewollt.

—EDIT—hatte Doppelpost, deswegen nachgetragen------

@Körnerbrötchen Wie machst du das denn auf deiner HP?

Und wenn ich auf Impressum klicke lädt die Seite zwar neu,
Soweit so gut,
aber home.html verschwindet nicht.

Und der Link zur HP: TMNationsFans

Auf meiner Seite? Ich habe eine Menge Seiten! :smiley:
Grundsätzlich mache ich es etwas anders.
Ich lege jede Seite an.

index.php
guestbook.php
contact.php

und dann include ich in jede dieser Seiten den jeweiligen Inhalt rein. Also den Header (mit Navigation) und den Footer. Aber ich würde lieber dein Problem weiter verfolgen.

ersetze:

case "news":
durch

case "impressum":

Mache ich.

Ergebnis:

Jahuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu!!!
Es funktioniert!!! THXTHXTHXTHX!!!
Super, vielen Dank!!!
Site: TMNationsFans

die Überschrift passt inzwischen zwar nicht mehr, aber naja! :smiley: Na dann viel Spaß damit (und ich hoffe du hast inzwischen auch verstanden, was hinter dem Code steckt).

Mit Include würde es natürlich genauso klappen (Endeffekt ist genau derselbe):

[code]

<?php switch($_REQUEST['content']) { case "home": include("home.html"); break; case "news": include("impressum.html"); break; default: include("home.html"); break; } ?>[/code]require_once bewirkt, dass die Seite nur einmal inkludiert werden kann. Sollte sie schon vorher inkludiert worden sein, so gibt die Funktion false zurück. Das nur mal nebenbei als kleine Lernlektüre.

$_REQUEST hat die Bedeutung von $_GET und zusätzlich die von $_POST. Sollte man sich nicht sicher sein, wie der Inhalt reinkommt (ob per POST oder GET), dann kann man REQUEST nehmen. Oder aber auch (was eher wahrscheinlich ist), wenn es über beide Wege geht. Aber eigentlich eine Sache, die man nie braucht. Besser ist sicher hier ein GET zu nehmen.

Grüße

Was ist denn das?

PHP wird doch so eingebunden:

<?php readfile("home.html"); ?>

Efchen, per Script lässt sich PHP auch einbinden ! Ist zwar Asbach Uralt, aber möglich. Ich weiß nicht ob das Problem vom ersten Post gelöst wurde.
Aber der Fehler liegt eindeutig daran, das du falsche Links angibst!

index.php?content=impressum

Das ist wiedermal was so banales, was man schon früher merken sollte.

Ansonsten ist alles korrekt.

Dazu könnte man auch die Dateien anders einbinden als per Include ein kurzes Beispiel:
[php]

<?php // ... Angriff der Spambots, bringt euch in Sicherheit !!! ... $file_handle = fopen("impressum.html", "r"); // Parameter 1: Datei, Parameter 2: R(Read) $content = fread($file_handle, filesize("impressum.html")); // Parameter 1: Handle von der Datei, Parameter 2: Datei Länge echo $content; // ... Angriff der Killerbots, bringt euch in Sicherheit !!! ... ?>

[/php]

Das könnte man dann wie folgt verwenden:
[php]

<?php // Lieber mit GET als Request $action = $_GET['content']; switch($action) { case "home": $file_handle = fopen("home.html", "r"); // Parameter 1: Datei, Parameter 2: R(Read) $content = fread($file_handle, filesize("home.html")); // Parameter 1: Handle von der Datei, Parameter 2: Datei Länge echo $content; break; case "news": $file_handle = fopen("impressum.html", "r"); // Parameter 1: Datei, Parameter 2: R(Read) $content = fread($file_handle, filesize("impressum.html")); // Parameter 1: Handle von der Datei, Parameter 2: Datei Länge echo $content; break; default: $file_handle = fopen("home.html", "r"); // Parameter 1: Datei, Parameter 2: R(Read) $content = fread($file_handle, filesize("home.html")); // Parameter 1: Handle von der Datei, Parameter 2: Datei Länge echo $content; break; } fclose($file_handle); ?>

[/php]

Um das auszuführen braucht die Datei 777 Rechte.

Ja, so mache ich das auch immer, wenn ich pures HTML einbinden will. Ich mache das aber in eine Funktion, die ich template() nenne. Meine Funktion ist wohl etwas komplizierter, als hier geschrieben :wink: ^^
[php]<?php
function template($file) {
$handle = fopen($file, „r“);
$contents = fread($handle, filesize($file));
echo($contents);
}
$action = $_GET[‚content‘];

switch($action)
{
case „home“:
template(„home.html“);
break;
//usw.
}
?>[/php]

Ist zwar Off-Topic für diesen Thread, aber wie soll das denn gehen? PHP muss doch serverseitig laufen, das -Tag wird aber clientseitig ausgewertet!

Ich bitte um Aufklärung!

Danke,
-Efchen

eben nicht! das Script tag wird, wenn php drin steht eben schon auf dem Server ausgeführt.

Wie das? Wird das -Tag generell serverseitig interpretiert? Und dann das Attribut language ausgelesen? Kann man stattdessen auch type angeben, wie es in modernen HTML-Varianten möglich ist? Wo kann man das nachlesen, denn bei SelfHTML steht darüber nichts.

Für die, denen es genauso geht, wie mir, ich hab hier was gefunden: PHP: Grundlagen der Syntax - Manual

Allerdings ist diese Art des Aufrufs ja in Strict-Varianten von HTML nicht mehr möglich, da das language-Attribut deprecated ist.

Danke für den Hinweis.