Hallo Felix,
ich bin heute nochmal die index.php durchgegangen und habe jeden Befehl im Manual nachgelesen und wie ich denke verstanden. Im Zusammenhang damit habe ich nun auch endlich das System verstanden denke ich. Ich werde jetzt auch besser darauf achten, wie ich mich ausdrücke, damit du meinen Standpunkt besser verstehen kannst.
Also, So denke ich funktioniert es:
<?php
// list of pages
$pages = array(
'contact' => 'contact.html',
'home' => 'home.html'
);
Zuerst werden den HTML Dateien die jeweiligen Schlüssel zugewiesen.
$contents = file_get_contents('./pages/home.html');
danach wird alles was in der home.html steht als string in die Variable $contents "geschrieben" (sagt man das so?).
Nun der, wie ich finde, schwierigste Teil.
if (array_key_exists("p", $_GET)
&& array_key_exists($_GET["p"], $pages)
) {
$contents = file_get_contents('/pages/'.$_GET["p"]);
}
die if-Anweisung prüft als erstes ob in der Variable $_GET, der Wert 'p' vorhanden ist. Und die Anweisung prüft ob eine Variable, die sich im Array $_GET befindet, ein Wert aus der Variable $pages ist. Sollte beides übereinstimmen, dann wird in die Variable $contents das eingefügt, was in der Datei, die den jeweiligen Variablenwert von $pages hat, steht. Zum Beispiel, die contact.html.
$tmp = file_get_contents('./pages/template.html');
// get news
$news = file_get_contents('./pages/news.html');
$serien = file_get_contents('./pages/serien.html');
$contact = file_get_contents('./pages/contact.html');
Hiermit werden einfach die Inhalte der HTML Dateien in die Variablen eingefügt.
$tmp = str_replace(
array('{$contents}', '{$news}'),
array( $contents, $news),
$tmp
);
Hiermit wird gesagt, dass nun das erste array mit dem Werten aus dem zweiten Array ersetzt wird und in $tmp geschrieben wird.
echo $tmp;
?>
Einfache Ausgabe von allem.
So, in der template sind die links so:
<li><a href="/">Home</a></li>
<li><a href="?p=contact">Kontakt/Impressum</a></li>
Wenn ich nun in der Navigation auf "Kontakt" klicke, wird der Wert der Variable $_GET zu p=contact was dann in der if-Anweisung dazu führen sollte, dass nun die contact.html in die Variable $contents geschrieben wird und diese sollte dann ausgegebn werden. Das funktioniert soweit auch (addresszeile hat den richtigen pfad). Leider kommt dann diese Fehlermeldung, da wo der Text dann eigentlich stehen sollte:
Warning: file_get_contents(/pages/contact): failed to open stream: No such file or directory in D:\HTML__\Xampp\htdocs\phptest\index.php on line 17
Natürlich habe ich nun schon mehrfach den Pfad geändert usw. aber es ändert sich nicht. Meine index.php liegt in einem Ordner. Und in diesem Ordner ist ein weiterer Ordner "pages" der die HTML Dateien beeinhaltet. Also sollte alles stimmen.
Wo habe ich den Fehler nun übersehen? Wie arbeitet php an dieser Stelle? Ich öffne die index.php und der Quelltext wird dann einmal eingelesen. Somit wird alles ausgegeben, wie es sein sollte (news.html, home.html, template.html). Wenn ich nun aber in der Navi auf einen link klicke, ändert sich ja die URL und die index.php wird nicht noch einmal ausgeführt, sprich der Quelltext wird nicht noch einmal eingelesen oder?
Was übersehe ich da oder habe ich immernoch einen Denkfehler?
Liebe Grüße
Simon P.