Fabian Maucher: Webseitenaufbau und Ordnerverwaltung

Hallo liebe alle,

nach einiger Zeit habe ich mal wieder ein komplett neues Webseiten-Projekt angefangen.

Früher habe ich dazu immer die klassische index.php angelegt, eine Navigation mit Verweisen nach dem Schema

<a href="?p=willkommen">Willkommen</a>

eingefügt und den jeweiligen Content dann letztendlich mit

<?php  
if(!file_exists($p)) {  
 include($p);  
}  
?>

ausgegeben.

In Hinsicht auf Suchmaschienen-Optimierung usw. kommt mir das mittlerweile etwas unkonventionell vor. Andererseits ist es dadurch natürlich am einfachsten, den immer gleichbleibenden Header bzw. Footer "mitzuschleppen".

Ich wollte deshalb einfach mal fragen, wie ihr eure Seiten so aufbaut, und ob ihr eine Empfehlung für mich habt. Ach ja, vielleicht wäre es noch von Bedeutung zu wissen, dass meine Seite sehr PHP-lastig werden wird.

Herzlichen Dank schonmal für eure fachkundige Hilfe!

Schöne Grüße
Fabian

  1. Es gibt zahlreiche Möglichkeiten, so ein Projekt zu organisieren. Eine recht elegante Möglichkeit besteht darin, jene Module, die überall verwendet werden, im Root-Verzeichnis aufzubewahren und für jede Seite ein Verzeichnis mit den speziellen Modulen und einer index.php zu haben. Letztere dient dann lediglich dem Setzen der Umgebungsvariablen für die Seite und der Zusammenstellung der Module.

    Gruß, LX

    --
    X-Self-Code: sh:( fo:) ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: Unusual
    X-Please-Search-Archive-First: Absolutely Yes
  2. <a href="?p=willkommen">Willkommen</a>

    eingefügt und den jeweiligen Content dann letztendlich mit

    <?php

    if(!file_exists($p)) {
    include($p);
    }
    ?>

    
    >   
    > ausgegeben.  
      
    das du das so machst, ist aber nicht dein erst bzw dir ist offenbar nicht klar, dass das höchst gefährlich ist?
    
    1. <a href="?p=willkommen">Willkommen</a>

      eingefügt und den jeweiligen Content dann letztendlich mit

      <?php

      if(!file_exists($p)) {
      include($p);
      }
      ?>

      
      > >   
      > > ausgegeben.  
      >   
      > das du das so machst, ist aber nicht dein erst bzw dir ist offenbar nicht klar, dass das höchst gefährlich ist?  
        
      Wie gesagt, dass diese Lösung nicht optimal ist war mir klar; deswegen ja auch dieser Thread. Abgesehen davon war ich immer der Überzeugung, dass ich die Möglichkeit, externe Dateien über die GET-Variable einzuschleusen, mit der "file\_exist"-Funktion ausschließen zu können. Falls das nicht der Fall ist oder du auf eine ganz andere Problematik anspielst, wäre ich anstatt einem sinngemäßen "Oh mein Gott wie kannst du nur!!" an Aufklärung dankbar... :)  
        
      Ohnehin hat sich die Methode sowieso erledigt, ich werde wahrscheinlich den Vorschlag von LX umsetzen (Vielen Dank dafür schonmal!)
      
      1. Falls das nicht der Fall ist oder du auf eine ganz andere Problematik anspielst, wäre ich anstatt einem sinngemäßen "Oh mein Gott wie kannst du nur!!" an Aufklärung dankbar... :)

        für die von dir gewählte methode ist aktives register_globals erforderlich - es ist anzunehmen, dass du das nicht nur an dieser stelle so machst - das ist der knackpunkt der gefährlichkeit (sprich, die paar zeilen sind nich das eigentliche problem) - du solltest dich auch bei LX' variante von register_globals trennen und variablen immer von dort holen, wo sie herkommen

        wenn du eine get-variable erwartest, hole sie aus dem superglobalen array $_GET[] um zu vermeiden, dass dir jemand post-variablen oder cookie-variablen unterjubelt usw

        zudem müsste es in deinem fall wohl if(file_exists()) heissen, das ! davor ist denke ich nicht förderlich ;)

        1. wenn du eine get-variable erwartest, hole sie aus dem superglobalen array $_GET[] um zu vermeiden, dass dir jemand post-variablen oder cookie-variablen unterjubelt usw

          Ach so, das klingt plausibel. Danke für den Hinweis, als "Casual Programmer" wie ich denkt man immer "Ja gut, das funktioniert doch auch einfach", ohne sich dabei wirklich Gedanken zu machen. Werd's aber in Zukunft umsetzen, vielen Dank für die Erklärung.

          zudem müsste es in deinem fall wohl if(file_exists()) heissen, das ! davor ist denke ich nicht förderlich ;)

          Nun ja, Copy & Paste ist der Feind der Fehlerlosigkeit ... ;)

          1. Nun ja, Copy & Paste ist der Feind der Fehlerlosigkeit ... ;)

            oder anders (ein klassischer fall von fehlerhafter induktion):
            jede software hat mindestens einen fehler
            jede software lässt sich um mindestens eine zeile vereinfachen
            ergo: jede software ist ein potentiell fehlerhafter einzeiler

        2. Hallo,

          für die von dir gewählte methode ist aktives register_globals erforderlich - es ist anzunehmen, dass du das nicht nur an dieser stelle so machst - das ist der knackpunkt der gefährlichkeit (sprich, die paar zeilen sind nich das eigentliche problem) - du solltest dich auch bei LX' variante von register_globals trennen und variablen immer von dort holen, wo sie herkommen

          zudem müsste es in deinem fall wohl if(file_exists()) heissen, das ! davor ist denke ich nicht förderlich ;)

          file_exists() sorgt zwar dafür, dass keine Dateien über die url-Wrapper eingebunden werden können, schützt aber nicht davor, dass das Skript völlig ungesichert jede beliebige Datei, die es lesen kann, auch einbinden kann. Das ist *keine* gute Idee.

          Stattdessen sollte es ein assoziatives Array an erlaubten Dateien geben. Der GET-Parameter wird als Schlüssel verwendet; die Arraywerte sind die Pfade zu den erlaubten Dateien. Somit ist gesorgt, dass nur erlaubte Dateien eingebunden werden können.

          Freundliche Grüße

          Vinzenz