PDA

Vollständige Version anzeigen : Content in die Index laden


losekneipe
12.04.2007, 23:20
Wer unterstützt mich bei folgender Sache

Und zwar möchte ich wie in vms2 das der Content den man im Menü aufruft in dei Indexseite reinlädt meisten sehen dann ja die adresse so aus

www.beispielseite.de/index?=impressum
www.beispielseite.de/index?=sitemap

usw.

Ich hoffe ihr versteht was ich meine. Da muss ich doch in der index irgendwie auch mit include arbeite!? Aber ich weiß nicht wie ich das umsetzte. Beim vms2 geht das ja so

require_once('include/content/'.$_GET['content'].'.php');

und das menü dementsprechend so

<a href="index.php?content=impressum">Impressum</a>

Aber wenn ich das auch so mache geht das nicht. Weiß nicht welche befehle noch dazu gehören damit das so geht.

Und wie rufe ich dann wenn einer die domain aufruft ein content automatisch auf, wie beim vms2 die "start"

Holstenjungs
12.04.2007, 23:26
Also du fügst in der index.php folgendes ein:

require_once('include/content/'.$_GET['content'].'.php');


Wenn du nun diesen Link (www.test.de/index.php?content=impressum) dann wird dieses ($_GET['content']) durch "impressum" ersetzt. Also lautet die php Anweisung dann:

require_once('include/content/impressum.php');

Diese Datei kann aber nur aufgerufen werden, wenn in dem Ordner wo die index.php liegt auch ein Ordner namens "include" darin wieder der Ordner "content" und darin die impressum.php liegt.

Das war schon das ganze Geheimnis. mehr brauchst du dafür nicht.

Wenn du jetzt die Startseite ohne "?content=impressum" aufrufst, also eine startseite angezeigt werden soll, dann mußt du in der index.php folgenden Code eingeben:

if ($_GET['content'] == "") {$_GET['content'] == "start"; }


Das sollte dann langen. Da passiert also nichts anderes, als wenn die Variable "$_GET['content']" leer ist, das er sie dann mit der start.php füllt.

losekneipe
12.04.2007, 23:37
das habe ich, sorry geht aus dem titel leider nicht hervor.

Holstenjungs
12.04.2007, 23:42
Ja, habe ich auch gerade gesehen. guck mal oben im Post.

losekneipe
12.04.2007, 23:59
so wie dort beschrieben geht es. nun habe ich aber die contentseiten im selben verzeichnis wie die index.php. wie mache ich das dort? Das heißt ich möchte kein verzeichniswechsel durchfürhen. habe viele kombinationen durchgeführt, aber immer bekomme ich eine fehlermeldung. leider bekomme ich das noch nicht so hin. aber danke schon mal für die hilreiche antwort bishher.

Holstenjungs
13.04.2007, 00:04
dann mach mal aus dem hier:
require_once('include/content/'.$_GET['content'].'.php');

das hier:
require_once("".$_GET['content'].".php");

dann sollte es funktionieren.

losekneipe
13.04.2007, 00:14
Klasse das geht. Habe allerdings die gänsefüsschen in einfache oberstriche gesetzt. geht auch

Letzte andere frage dazu, ich habe woanders noch irgendwas mit

Allerdings solltest man vorsichtshalber den $_GET Wert auf Gültigkeit prüfen. Keine Verzeichniswechseln zulassen, mit file_exists() prüfen, ob die Datei existiert etc.

Für die Standartseite
Mit isset() prüfen ob der Index "content" in $_GET existiert oder nicht. Falls nicht, auf "start" setzten.

Das mit dem verzeichniswechsel ist ja geklärt, aber das andere mit file_exist

So danach sind meine Fragen dann auch beantwortet.

Edit:

ich glaube ich habe es so ne?? Zumindest funktioniert das.

if (!$_GET['content']) $_GET['content'] = 'start';
$_GET['content'] = str_replace('.','',$_GET['content']);
if (!file_exists(''.$_GET['content'].'.php')) {
$_GET['content'] = '404';

losekneipe
13.04.2007, 08:41
Neue Frage zu dem gleichen Thema, deshalb der zwei Posts hintereinander.

So habe es hinbekommen habe aber noch eine Frage dazu:

So sieht es ja jetzt aus:

// Content prüfen
if (!$_GET['content']) $_GET['content'] = 'start';
$_GET['content'] = str_replace('.','',$_GET['content']);
if (!file_exists(''.$_GET['content'].'.php')) {
$_GET['content'] = '404';
}

require_once(''.$_GET['content'].'.php');


Und ein Menülink dazu so:
<a href="index.php?content=start" title="willkommen" tabindex="1">start</a>

Jetzt sieht ja die absolute adresse im Browser dann ja so aus als Beispiel
http://127.0.0.1/index.php?content=start

Lässt sich das auch verkürzen? Das es so ausschaut?
http://127.0.0.1/?start
Oder so änlich?

Ich habe da so ein anhaltspunkt mit dem ich aber nicht weiterkommen. Mein Anhaltspunkt schaut so aus.
// Links verkürzen
if (isset ($_GET['start']) && !empty ($_GET['start'])) {
$_GET['content'] = '';
}
Das Funktioniert so leider nicht, und ich wollte nicht für jeden link so ein Befehl einsetzten.