$_GET['open'] Problem? + Mod Rewrite
Hallo ihr. Folgendes Problemchen:
Meine URLs sehen zum beispiel so aus:
Das script welches ich dafür verwende sieht so aus:
Über dem <DOCTYPE>
Im <BODY>
In diesem Beispiel ist es die "aktuelles" Seite die beim besuchen der Website als erstes aufgerufen wird. Das tut im jetzigen Problem aber nix zur sache. Also nicht ablenken lassen
mein problem ist, ich muss die datei "aktuelles.php" in das root verzeichniss kopieren um das sie aufgerufen wird. Das ist jedoch völliger Quatsch, weil dadurch die Übersicht verloren geht.
Wenn ich nun aber im PHP Code die zeile:
in
ändere, passiert garnichts außer das der Inhalt nicht mehr includiert wird.
Ändere ich die URL in:
Wird wieder alles angezeigt. ich möchte dem User aber nicht grad zeigen wo meine Dateien sind und wie die Struktur aufgebaut ist.
Wo ist hier der fehler im System? Ich dank schon mal
Meine URLs sehen zum beispiel so aus:
|
|
Quellcode |
1 |
http://examples.com/index.php?open=aktuelles |
Das script welches ich dafür verwende sieht so aus:
Über dem <DOCTYPE>
|
|
PHP-Quelltext |
1 |
<? if(!isset($_GET['open'])) $_GET['open'] = "aktuelles"; ?>
|
Im <BODY>
|
|
PHP-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?PHP
// Content
if(!isset($_GET['open'])) $_GET['open'] = "aktuelles";
$file = $_GET['open'].".php";
if(file_exists($file)) include($file);
else include("error.php");
/*
if($open=="aktuelles") include("aktuelles.php");
// content
elseif($open=="aktuelles") include("aktuelles.php");
// error
else include("error.php");*/
?>
|
In diesem Beispiel ist es die "aktuelles" Seite die beim besuchen der Website als erstes aufgerufen wird. Das tut im jetzigen Problem aber nix zur sache. Also nicht ablenken lassen

mein problem ist, ich muss die datei "aktuelles.php" in das root verzeichniss kopieren um das sie aufgerufen wird. Das ist jedoch völliger Quatsch, weil dadurch die Übersicht verloren geht.
Wenn ich nun aber im PHP Code die zeile:
|
|
PHP-Quelltext |
1 |
elseif($open=="aktuelles") include("aktuelles.php");
|
in
|
|
PHP-Quelltext |
1 |
elseif($open=="aktuelles") include("include/sites/aktuelles.php");
|
ändere, passiert garnichts außer das der Inhalt nicht mehr includiert wird.
Ändere ich die URL in:
|
|
Quellcode |
1 |
http://examples.com/index.php?open=include/sites/aktuelles |
Wird wieder alles angezeigt. ich möchte dem User aber nicht grad zeigen wo meine Dateien sind und wie die Struktur aufgebaut ist.
Wo ist hier der fehler im System? Ich dank schon mal
FWK-ART [media] - Fotos & Videos der schönsten und größten (Musik)Feuerwerke
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Rene82« (9. August 2008, 20:27)
Na wenn du vorher mit $_GET["open"] arbeitest und aufeinmal $open nimmst, is das klar.
Entweder weist du irgendwo $open = $_GET["open"]; zu, oder arbeitest durchweg mit einer Variablen.
Entweder weist du irgendwo $open = $_GET["open"]; zu, oder arbeitest durchweg mit einer Variablen.
Auf jede Frage gibt es eine Antwort, man muss nur lange genug danach suchen.
z.B. auf www.netscripter.de :-P
ja, das war nun ein kleines beispiel. das Script geht ja weiter:
Das $_GET["open"] sagt ja nur, das er die "aktuelles.php" beim Seitenaufruf automatisch anzeigen soll. Wenn ich nun einen Link
zuweiße, sucht er die events.php. Der Sucht jedoch nur im root.
|
|
PHP-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?PHP
// Content
if(!isset($_GET['open'])) $_GET['open'] = "aktuelles";
$file = $_GET['open'].".php";
if(file_exists($file)) include($file);
else include("error.php");
/*
if($open=="aktuelles") include("aktuelles.php");
// content
elseif($open=="aktuelles") include("aktuelles.php");
elseif($open=="events") include("events.php");
elseif($open=="partner") include("partner.php");
elseif($open=="gewinnen") include("gewinnen.php");
// error
else include("error.php");*/
?>
|
Das $_GET["open"] sagt ja nur, das er die "aktuelles.php" beim Seitenaufruf automatisch anzeigen soll. Wenn ich nun einen Link
|
|
Quellcode |
1 |
http://examples.com/index.php?open=events |
FWK-ART [media] - Fotos & Videos der schönsten und größten (Musik)Feuerwerke
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Rene82« (9. August 2008, 18:47)
Naja, trotzdem:
Weißte, was ich mein?
Edit: Copy&Paste Fehler beseitigt.
|
|
PHP-Quelltext |
1 2 3 4 5 6 7 8 9 10 |
<?PHP
// Content
if(!isset($_GET['open'])) $_GET['open'] = "aktuelles";
elseif($_GET['open']=="aktuelles") include("aktuelles.php");
elseif($_GET['open']=="events") include("events.php");
elseif($_GET['open']=="partner") include("partner.php");
elseif($_GET['open']=="gewinnen") include("gewinnen.php");
// error
else include("error.php");
?>
|
Weißte, was ich mein?
Edit: Copy&Paste Fehler beseitigt.
Auf jede Frage gibt es eine Antwort, man muss nur lange genug danach suchen.
z.B. auf www.netscripter.de :-P
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »OnkelJürgen« (9. August 2008, 20:08)
Hm, ich glaube es zu glauben
aber deine variante erzeugte nen "syntax error"
Parse error: syntax error, unexpected T_ELSEIF in /hp/au/aa/ul/www/lab/index.php on line 133
das problem war die zweite Zeile:
Also Quasi das doppelte "elseif":
ich habs jetzt so und es Funktioniert:
Und wenn wir schon mal bei variablen sind, die Vollständige URL sieht so aus:
&subn=1 steht für eine bestimmte Subnavigation die angezeigt werden soll
&css=1 steht für eine spezielle CSS datei die verwendet werden soll.
Ist es über "Mod Rewrite" möglich, aus der oben genannten URL zb. das zu machen?
aber deine variante erzeugte nen "syntax error"Parse error: syntax error, unexpected T_ELSEIF in /hp/au/aa/ul/www/lab/index.php on line 133
das problem war die zweite Zeile:
|
|
PHP-Quelltext |
1 2 3 4 |
<?PHP
// Content
if(!isset($_GET['open'])) $_GET['open'] = "aktuelles";
elseif(elseif($_GET['open']=="aktuelles") include("aktuelles.php");
|
Also Quasi das doppelte "elseif":
|
|
PHP-Quelltext |
1 |
elseif(elseif(
|
ich habs jetzt so und es Funktioniert:
|
|
PHP-Quelltext |
1 2 3 4 5 6 |
// content
if(!isset($_GET['open'])) $_GET['open'] = "aktuelles";
elseif($_GET['open']=="aktuelles") include("include/sites/aktuelles.php");
elseif($_GET['open']=="events") include("include/sites/events.php");
elseif($_GET['open']=="partner") include("include/sites/partner.php");
elseif($_GET['open']=="gewinnen") include("include/sites/gewinnen.php");
|
Und wenn wir schon mal bei variablen sind, die Vollständige URL sieht so aus:
|
|
Quellcode |
1 |
http://examples.com/index.php?open=aktuelles&subn=1&css=1 |
&subn=1 steht für eine bestimmte Subnavigation die angezeigt werden soll
&css=1 steht für eine spezielle CSS datei die verwendet werden soll.
Ist es über "Mod Rewrite" möglich, aus der oben genannten URL zb. das zu machen?
|
|
Quellcode |
1 2 3 4 |
http://examples.com/aktuelles.php http://examples.com/events.php http://examples.com/partner.php http://examples.com/gewinnen.php |
FWK-ART [media] - Fotos & Videos der schönsten und größten (Musik)Feuerwerke
ist ja auch Quatsch und hat OnkelJürgen so auch nicht gepostet.
Zitat
elseif(elseif($_GET['open']=="aktuelles") include("aktuelles.php");
Schau dir doch nochmal seinen Quelltext an. Eine solche Kombimation sehe ich da bei ihm nicht. Klar dass er bei diesem deinem Konstrukt einen Parser-Error bekommt.
2. die Pfade betreffend:
Vergegenwärtige dir, dass php ähnlich html mit relativen und absoluten Pfaden arbeitet/ arbeiten kann.
php-manual zu include :
Zitat
Dateien die mit include eingebunden werden, werden zuerst im include_path
relativ zum gegenwärtigen Arbeitsverzeichnis gesucht und danach im
include_path relativ zum Verzeichnis des ausgeführten Skripts. Zur
Veranschaulichung: Falls Ihr include_path . entspricht,
ist das gegenwärtige Arbeitsverzeichnis
/www/. Sie haben über include
include/a.php eingebunden und in diesem Skript steht
die Anweisung include "b.php". In diesem Fall wird
b.php zuerst im Verzeichnis
/www/ gesucht und danach im
Verzeichnis /www/include/.
Beginnt der Pfad mit ../ so wird der include_path
nur relativ zum aktuellen Verzeichnis durchsucht.
Ich nehme mal an, dass dein Script, welches den Inhalt der betreffenden Seiten included, soetwas wie index.php heißt und ist. Diese Datei liegt vermutlich in deinem "root"-Verzeichnis (und soll ja dort auch liegen.
Der include-Befehl macht im Prinzip nichts anderes, als den Inhalt der zu includierenden (einzufügenden) Datei an eben jener Stelle einzufügen, wo der include-Befehl erteilt wird.
Es ist also nichts anderes, als wenn du den PHP-Code z.B. der Datei aktuell.php genau dort in der index.php-Datei einsetzt(copy & paste), wo der include-Befehl steht.
Der Pfad zu deiner "aktuell.php" wird in deinem Beispiel relativ von der index.php gesucht. (abgesehen vom ebenfalls durchsuchten, in der php.ini gesetzten include-path).
In deinem Fall sucht er also (genauso, wie es via html geschieht), die Datei aktuell.php im gleichen Verzeichnis, wo deine index.php (die includierende Datei) liegt.
Möchtest du z.B. die zu includierenden Dateien in einem Unterverzeichnis "site_content" haben, so müßtest du bei der include-Anweißung
|
|
PHP-Quelltext |
1 |
include "site_content/aktuell.php";
|
schreiben.
andere Möglichkeiten analog zum Vorgehen in html (immer von der includierenden Datei aus gesehen):
ein Verzeichnis nach oben, dann in Verz. site_content
|
|
PHP-Quelltext |
1 |
include "../site_content/aktuell.php";
|
Diese Version kann selbst wiederum von einer anderen Datei in jeglichem anderen Verzeichnis includiert werden. Für den sonstigen normalgebrauch überdimensioniert.
|
|
PHP-Quelltext |
1 |
include dirname(__FILE__)."/site_content/aktuell.php";
|
also, wenn z.B. deine aktuell.php wiederum aus includes aus unterschiedlichen weiteren includes bestehen würde und von verschiedenen Verzeichnissen aus zugänglich sein sollte.
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »ospx« (10. August 2008, 12:58)
ist ja auch Quatsch und hat OnkelJürgen so auch nicht gepostet.
Schau dir doch nochmal seinen Quelltext an. Eine solche Kombimation sehe ich da bei ihm nicht. Klar dass er bei diesem deinem Konstrukt einen Parser-Error bekommt.
Er hats Editiert (09 August 2008, 20:0

Zu den anderen Punkten komm ich heute Abend. muss jetzt weg

Edit: Ich habs mir doch noch fix durchgelesen. Ähm, du hast dir jetzt soviel Mühe gegeben aber das weiß ich doch alles
es ging doch nur darum, das mein anfangsscript die datei aus einem anderen verzeichniss nicht ausgegeben hatte ohne das ich den pfad in die URL schreiben musste. Der Onkel hatte mir daraufhin eine überarbeitete variante gepostet die funktioniert und logischer ist. jetzt gehts ja wie ich mir das vorgestellt habe-/hatte.

Aber trotzdem Danke
Vielleicht hast du ja ne erklärung für das "Mod Rewrite" Problem
FWK-ART [media] - Fotos & Videos der schönsten und größten (Musik)Feuerwerke
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Rene82« (10. August 2008, 13:10)
Ähnliche Themen
-
PHP »-
Bereiche einer Website ausblenden?!
(8. August 2006, 15:59)
-
PHP »-
Übergabe mit $_GET
(1. Dezember 2002, 17:22)


