Marcel: Alle Seiten aus einer zentralen index.php starten...

Hallo,

ich habe bisher eine Seite, die aus vielen verschiedenen PHP-Dateien besteht. Jetzt bin ich auf die Idee gekommen (oder besser: Ich hab gesehen, dass andere Seiten das so machen) alle Seiten aus einer Indexdatei heraus zu starten.

Follgendes hab ich mir überlegt:

##############

<a href="index.php?page=home">Home</a>
<a href="index.php?page=gb">Gästebuch</a>
<a href="index.php?page=forum">Forum</a>

index.php:

<?
  if (isset($_GET["page"]))
     $page = $_GET["page"] . ".php";
  else
     $page = "home.php";

if (!file_exists($page))
    $page = "home.php"

include ($page);
?>

##############

Was haltet ihr davon?
Was sind eurer Meinung nach die Vor- bzw. die Nachteile?

mfg Marcel

  1. guten Abend,

    Was sind eurer Meinung nach die Vor- bzw. die Nachteile?

    Solange dein PHP-Code "sauber" ist, gibt es nichts, was dagegen spricht  -  aber auch nichts, was dich zwingend dazu verpflichtet, so zu verfahren. Kurz: es ist eigentlich die übliche Praxis und damit ein bißchen langweilig.

    Grüße aus Berlin

    Christoph S.

    1. Auch einen schönen Abend

      Solange dein PHP-Code "sauber" ist, gibt es nichts, was dagegen spricht  -  aber auch nichts, was dich zwingend dazu verpflichtet, so zu verfahren. Kurz: es ist eigentlich die übliche Praxis und damit ein bißchen langweilig.

      Was würdest Du denn vorschlagen?
      Für jede Seite eine eigene Datei, und head.inc.php u.ä. jeweils includen klingt für mich auch nicht unüblicher oder spannender...

      Gruss Louis

      1. hi,

        Was würdest Du denn vorschlagen?

        Nichts. Mach das erstmal so. Wenns funktioniert, ist ja alles gut, und wenn du dabei auf die Nase fällst, meldest du dich wieder hier.

        Christoph S.

        1. Hi Christoph

          Nichts. Mach das erstmal so. Wenns funktioniert, ist ja alles gut, und wenn du dabei auf die Nase fällst, meldest du dich wieder hier.

          Ich bin nicht Marcel. Ich habs auch nicht so gemacht. Und bin auch nicht auf die Nase gefallen.

          ...nichts, was dich zwingend dazu verpflichtet, so zu verfahren. Kurz: es ist eigentlich die übliche Praxis und damit ein bißchen langweilig.

          Diese Aussage ist eher etwas herablassend, weshalb ich annehme, dass Du eine supertolle, spannende Lösung hast, und diese wiederum hat meine Neugierde geweckt.

          mfg
          Louis

        2. und wenn du dabei auf die Nase fällst, meldest du dich wieder hier.

          Hallo Christoph,

          Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /web/index.php:20) in /web/gbook/index.txt on line 47

          Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /web/index.php:20) in /web/gbook/index.txt on line 47

          Was ist denn das Problem? Hat vorher Funktioniert.

          mfg Marcel

          1. hallo,

            Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /web/index.php:20)

            Hm. Wo kommt denn diese "20" her?

            in /web/gbook/index.txt on line 47

            Ich weiß leider nicht, was in Zeile 47 deiner Datei steht. Schau nach, was in dieser Zeile eventuell falsch sein könnte. Und: brauchst du wirklich unbedingt Cookies (ich persönlich kann die Kekse nicht ausstehen und lösche sie, so oft ich kann).

            An sich ist ein "warning" ein Zeichen dafür, daß bloß noch eine klitzekleine Kleinigkeit irgendwo zu beheben ist. Die Fehlermeldung sagt dir doch auch, was da nicht geklappt hat. Aber deinen Code kennst natürlich nur du.

            Grüße aus Berlin

            Christoph S.

            1. Hallo Christoph,

              danke für deine Tipps, Problem hab ich gelöst.

              mfg Marcel

        3. Hallo,

          ich habe schon ein zweites noch viel größeres Problem.

          ich erklärs am besten gleich am Beispiel:
          Früher hatte ich eine gaestebuch.php die das Gästebuch erzeugt hat. Sie hat immer 20 Einträge auf eine Seite gemacht. Man konnte man über einen Link blättern (z.B. gaestebuch.php?seite=5).
          Das funktioniert jetzt natürlich nicht mehr, denn ich kann die gaestebuch.php nicht mehr direkt ansprechen. Die soll ja über index.php included werden.
          Jetzt dachte ich wenn ich http://www.treffpage.de/index.php?page=gbook&seite=5 zum blättern verwende müsste es wieder gehen. tut es aber nicht.
          Kann sich jemand vorstellen warum? Denke ich einfach nur falsch?

          mfg Marcel

          1. Jetzt dachte ich wenn ich http://www.treffpage.de/index.php?page=gbook&seite=5 zum blättern verwende müsste es wieder gehen. tut es aber nicht.

            So müsste es eigentlich gehen, deshalb kann man den fehler nur im code direkt finden!

            welche seite wird denn angezeigt immer die 1.? oder garnix? beschrieb mal genauer oder poste mal den code.

            Frank_

  2. Hi Marcel,

    ich hab grad was ähnliches gebaut, allerdings include ich je nach Parameter diverse extra-Dateien. Denn: Eine RIESEN Seite wird unübersichtlich.

    Solange das bei 3-5 bis 10 Seiten bleibt geht das. Aber wenn Du dann noch auf Benutzereingaben reagieren möchtest, Fehlermeldungen ausgeben willst und so weiter wird das schnell sehr sehr lange. Und dann bekommst Du ne Fehlermeldung on Line 5103.

    Viel Spass dann beim suchen....

    Ich habs so gelöst:

    if (site=="gb")inlude ("http://".$_SERVER["HTTP_HOST"]."/gaestebuch.php");

    oder mit ner select case Anweisung bei mehr Seiten. Dann habe ich mein Layout in Templates extern gespeichert und diese include ich ebenfalls.

    In der Datei Gästebuch verwalte ich dann alles, was mit dem GB zu tun hat: Neueintrag, alte Einträge, Archiv, wieviele Einträge angezeigt werden sollen, "Blätterfunktion", Suche usw.... Für mich ist das überschaubarer, da mein web reletiv umfangreich ist.

    Greets Tom1tk

  3. Hello,

    ich habe bisher eine Seite, die aus vielen verschiedenen PHP-Dateien besteht. Jetzt bin ich auf die Idee gekommen (oder besser: Ich hab gesehen, dass andere Seiten das so machen) alle Seiten aus einer Indexdatei heraus zu starten.

    <a href="index.php?page=home">Home</a>
    <a href="index.php?page=gb">Gästebuch</a>
    <a href="index.php?page=forum">Forum</a>

    index.php:

    <?

    $pagedir = "/www/domain/pages/";  # als Beispiel
    #   $docroot = "/www/domain/docs/";   # nur als Bsp. zur Lage von $pagedir
        $ext     =".php";

    if (isset($_GET["page"]))
         $page = $_GET["page"] . ".php";

    $_parts = pathinfo($_GET["page"]);
           $page = $pagedir.basedir($_parts["basedir"],".".$_parts["extension"]).$ext;

    Sonst kann man den ganzen Server nach *.php-Dateien absuchen

    else
         $page = "home.php";

    if (!file_exists($page))
        $page = "home.php"

    include ($page);
    ?>

    ##############

    Was haltet ihr davon?

    Abgesehen davon, dass das der Anfang einer netten Studie über Include, Sicherheit und ModRewrite werden könnte halte ich gar nichts davon. Es ist für statische Seiten meistens unsinnig, sie derartig bereitzustellen. Einziger Vorteil: man kann über Sessions auch den Aufruf von Einzelframes vermeiden.

    Suchmaschinen mögen derartig referenzierte Seiten nicht gerne freiwillig aufnehmen. Man schießt sich damit also ein Eigentor.

    Das Ganze lohnt sich mMn nach nur, wenn man die Seiten dynamisch aus einer DB erzeugt, vorzugsweise bei Communities und Portalen. Das hat aber auch nur Sinn, wenn die Elemente einer Seite klassifiziert sind und man z.B. automatisch dafür sorgt, dass ein Termin nicht nur auf der eigentlichen Veröffentlichungsseite erscheint sondern auch in der allgemeinen Terminliste oder das Produkt-Angebot eines Teilnehmers automatisch in der gemeinsamen Liste der Angebote steht usw...

    Auch unterschiedliche Zugriffsrechte für die (verstreuten) Seiten des Webangebotes lassen sich damit regeln.

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen