Seite dynamisch mit PHP erstellen klappt nicht :(

  • Heyho,
    eine Frage zu meinem Website-Core:


    Zuallererst: Die Links werden via .htaccess alle über diese index.php geleitet. Die Seite mit dem Startinhalt heißt dann index.page.php, die entsprechende Subnav index.nav.php


    Eigentlich sollte es ja so ablaufen: am Anfang guckt man, ob die (via URL) vorgegebene Seite auch existiert. Wenn ja, nimmt man die Seite, wenn nein, wird alles auf index gesetzt (Z.13-18 ).
    Dann guckt man bei Subnav-Erstellung, ob die genommene Seite auch eine Subnavigation besitzt (also eine Hauptseite ist). Wenn ja, nimmt man diese und setzt die Session auf diese Hauptseite, wenn nein, nimmt man die Subnav der letzten Hauptseite (Z. 55-62).
    Zuletzt nimmt man aus dem Unterordner der letzten Hauptseite die aktuell aufgerufene und baut sie ein (Z. 67).
    So die Theorie.


    In der Praxis klappt das aber nicht.
    Es funktioniert so lange gut, bis man zweimal hintereinander eine Unterseite (ohne Subnav) aufrufen will. Man klickt also zB in der Hauptnav auf Vorstellen, dann auf (zB) Gruppe 1 und zuletzt Gruppe 2, die beiden Gruppen über die Subnav.
    Alle Seiten existieren mit korrektem Namen in den richtigen Ordnern. Aber trotzdem wird anstatt der Seite von Gruppe 2 die Fehlermeldung ausgegeben:

    Code
    Warning: include(pages/index/packs.page.php): failed to open stream: No such file or directory in D:\xampp\htdocs\sfd_3-0\index.php on line 86
    
    
    
    
    Warning: include(): Failed opening 'pages/index/packs.page.php' for inclusion (include_path='.;D:\xampp\php\PEAR') in D:\xampp\htdocs\sfd_3-0\index.php on line 86


    Deshalb sind auch die ganzen

    PHP
    echo("<br />" . $_SESSION["page"]);

    über den Code verteilt, ich wollte das prüfen. Heraus kam, dass aus einem mir unerfindlichen Grund irgendwo diese Session zurückgesetzt wird. Mein Problem ist nur: Bei Gruppe 1 wird an allen fünf Stellen (Z. 3, 19, 53,61,68 ) noch introduce also der Name der Hauptseite ausgegeben. Auch beim letzten, NACH dem letzten ausgeführten PHP-Code (Z. 68 ). Aber bei Aufruf von Gruppe 2 erscheint direkt beim ersten Mal, also VOR dem ersten PHP-Code wieder ein index, als würde keine Seite erkannt werden. Sie steht aber sowohl im Array als auch in der URL :?:


    Ich hoffe, das war jetzt nicht zu verworren und mir kann jmd helfen!

  • Also ich hab keine Ahnung warum Du Dir das antust :D


    aber erstmal:


    Du gibst etwas vor <!DOCTYPE aus ... evtl nur zum testen?



    Kann es sein, dass Du versuchst Files aus einem Verzeichnis als Unterseiten zu laden?
    Sozusagen: sobald Du ein neues File in den Ordner schiebst, wird es in der subNav angezeigt?


    Wenn ja - gute Idee. Ich vermute (weiß es aber im Moment nicht), dass es evtl eine Sicherheitslücke ist/verursacht.
    Ich seh da nicht so ganz durch. Frag mich aber auch, warum Du die page in die Session steckst.

  • Ich tu mir das an, weil ich für das Erstellen der Site kein CMS habe und deshalb den Core so gestalten will, das die Files möglichst übersichtlich im Webspace liegen ;)


    Das mit dem vor Doctype: hoppla, aber wenn du schon so fragst: ja, das war nur zum testen :whistling:


    Nein, nicht ganz. Im Anhang ist der Verzeichnisbaum, den ich jetzt erkläre:
    Sobald im Ordner nav eine Datei liegt, wird diese indziert. Wenn der entsprechende Name angesprochen wird (zB introduce), wird die Unternavigation aus dem File nav/introduce.nav.php (nur Links, ohne Liste ohne alles) und der entsprechende Inhalt aus pages/introduce/introduce.page.php geladen.
    Wenn ich nun in der Unternavigation zB auf packs.php klicke, erkennt PHP, dass dafür kein packs.nav.php vorhanden ist, ergo ist es keine Hauptseite. Daher soll eigentlich in der Session das introduce stehen bleiben. Dies war ja die zuletzt aufgerufene Hauptseite.
    Soweit klappt es auch. Klicke ich aber nun, nachdem introduce/packs.page.php geladen wurde, auf einen Link aus nav/introduce.nav.php (zB clans.php) ändert PHP zum einen die Unternavigation zurück zu index.nav.php und zum anderen kommt die Fehlermeldung er könne nicht index/clans.page.php laden. Also geht irgendwo das introduce der Session flöten. Ich weiß nur nicht wo, da beim Testskript auf der Seite packs.page.php NUR introduce angegeben wird (was korrekt ist), aber auf clans.page.php wird NUR index als Sessionvalue ausgegeben, obwohl zwischendurch nicht auf die Session zugegriffen wird (zumindest nicht durch mein Skript)


    Aber die Idee mit der automatischen SubNav-Erweiterung hat auch was ;) Kommt dann danach ;)

  • Übrigens, ich hab jetzt rausgefunden, woran es lag -_-


    EIN verdammtes, popeliges Bild, was ich schon einbinden ließ, aber noch nicht im Ordner hatte. D.h. weil das File das Bild nicht laden konnte, hat es die Session zerstört 8|


    Klingt schräg, ist aber so

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!