Webmaster Forum Logo Part 1 Webmaster Forum Logo Part 2
Webmaster Forum Logo Part 3
     
 
  :: Anmeldung

Benutzername:

Registrierung...

Passwort:

Passwort vergessen?

angemeldet bleiben


  
  :: Umfrage
Welche sozialen Netzwerke benutzt du regelmäßig?

 Facebook
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 73%
 keines
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 22%
 Google+
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 19%
 Twitter
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 11%
 Xing
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 schülerVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 meinVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 studiVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 MySpace
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%
 LinkedIn
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%

 ges. 393 Stimmen
 
  :: Buttons

Valid XHTML 1.0 Transitional

Rene82

Kaiser

Dabei seit: 08.08.2006

Beiträge: 1 231

 

1 Zum Seitenanfang

Samstag, 9. August 2008, 17:25

$_GET['open'] Problem? + Mod Rewrite

Hallo ihr. Folgendes Problemchen:

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 :)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Rene82« (9. August 2008, 20:27)

 

OnkelJürgen

Moderator

Dabei seit: 30.12.2002

Beiträge: 1 719

 

2 Zum Seitenanfang

Samstag, 9. August 2008, 18:17

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.
Auf jede Frage gibt es eine Antwort, man muss nur lange genug danach suchen.


z.B. auf www.netscripter.de :-P
 

Rene82

Kaiser

Dabei seit: 08.08.2006

Beiträge: 1 231

 

3 Zum Seitenanfang

Samstag, 9. August 2008, 18:46

ja, das war nun ein kleines beispiel. das Script geht ja weiter:

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
zuweiße, sucht er die events.php. Der Sucht jedoch nur im root.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Rene82« (9. August 2008, 18:47)

 

OnkelJürgen

Moderator

Dabei seit: 30.12.2002

Beiträge: 1 719

 

4 Zum Seitenanfang

Samstag, 9. August 2008, 19:44

Naja, trotzdem:

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)

 

Rene82

Kaiser

Dabei seit: 08.08.2006

Beiträge: 1 231

 

5 Zum Seitenanfang

Samstag, 9. August 2008, 20:26

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:

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
 

ospx

Kaiser

Dabei seit: 11.11.2006

Beiträge: 1 131

 

6 Zum Seitenanfang

Sonntag, 10. August 2008, 12:44

Zitat

elseif(elseif($_GET['open']=="aktuelles") include("aktuelles.php");
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.

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)

 

Rene82

Kaiser

Dabei seit: 08.08.2006

Beiträge: 1 231

 

7 Zum Seitenanfang

Sonntag, 10. August 2008, 13:01

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:08)
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 :)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Rene82« (10. August 2008, 13:10)

 

Ähnliche Themen