[php] include funktioniert nicht



  • Hallo!

    Ich habe ein Problem, dass ich mir nicht erklären kann.
    Wenn ich mein Script mit "?page=news" aufrufe, sollte eigentlich die news.php-Seite eingebunden werden. Dies geschieht aber nicht und der Bildschirm bleibt weiß.
    Mit dem unten stehenden Code binde ich die Seiten ein. Die Datei ist vorhanden und auch richtig geschrieben. Das Problem muss am "include"-Teil liegen, da ich zum Test

    echo 'Test';
    

    vor und hinter den unten stehenden include-Teil gesetzt habe. Davor zeigt er den Text an. Dahinter nicht. In der news.php habe ich zum Test auch mal ein

    echo 'Test';
    

    ganz zu Anfang der Datei gesetzt. Also vor dem restlichen Code. Der wird auch nicht mehr angezeigt. Somit ist ausgeschlossen, dass es an dem Quelltext in der news.php liegt. "error_reporting" ist bei mir auf "E_ALL" und es wird kein Fehler angezeigt.

    /**///[BEGIN] - include site///**/
    if(!empty($_SESSION['username']) && !empty($_SESSION['password']) && !empty($_SESSION['level']))
    {
      if(file_exists("include/".$_GET['page'].".php"))
      {
        include(realpath("include/".$_GET['page'].".php")); //hier ist das Problem
      }
      else
      {
        include(realpath("template/head.html"));
        include(realpath("include/navigation_left.php"));
        include(realpath("include/navigation_right.php"));
        include(realpath("template/home/home_1.html"));
        message("warning", 1);
        include(realpath("template/foot.html"));
      }
    }
    /**///[ENDIT] - include site///**/
    

    Vielleicht könnt ihr mir helfen!

    Gruß
    Wubbel



  • Wubbel schrieb:

    Das Problem muss am "include"-Teil liegen, da ich zum Test

    echo 'Test';
    

    vor und hinter den unten stehenden include-Teil gesetzt habe. Davor zeigt er den Text an. Dahinter nicht. In der news.php habe ich zum Test auch mal ein

    echo 'Test';
    

    ganz zu Anfang der Datei gesetzt. Also vor dem restlichen Code. Der wird auch nicht mehr angezeigt. Somit ist ausgeschlossen, dass es an dem Quelltext in der news.php liegt.

    Hast du es direkt um

    include(realpath("include/".$_GET['page'].".php")); //hier ist das Problem
    

    herum gemacht, oder vor/nach dem gesamten Code-Block? Also kommt er denn überhaupt zu dem if, bei dem er den Include ausführen sollte?!



  • Hallo Wubbel,
    ich suche Fehler immer so:

    /**///[BEGIN] - include site///**/
    if(!empty($_SESSION['username']) && !empty($_SESSION['password']) && !empty($_SESSION['level']))
    {
      if(file_exists("include/".$_GET['page'].".php"))
      {
         echo "Test 1: ".("include/".$_GET['page'].".php")."<br />";
        include(realpath("include/".$_GET['page'].".php")); //hier ist das Problem
         echo "Test 2: ".realpath("include/".$_GET['page'].".php")."<br />";
      }
      else
      {
        include(realpath("template/head.html"));
        include(realpath("include/navigation_left.php"));
        include(realpath("include/navigation_right.php"));
        include(realpath("template/home/home_1.html"));
        message("warning", 1);
        include(realpath("template/foot.html"));
      }
    }
    /**///[ENDIT] - include site///**/
    

    ]



  • flenders schrieb:

    Also kommt er denn überhaupt zu dem if, bei dem er den Include ausführen sollte?!

    Ja, denn ich habe es so gemacht wie Andy2006 es beschrieben hat.
    Nach seinem Beispiel bekomme ich also nur folgende Ausgabe:

    Test 1: include/news.php



  • Es tut mir leid. Mein Fehler!!!
    php.ini muss ja auch display_errors auf 1 sein, damit man Fehler bekommt!
    Entschuldigung noch einmal.



  • display_errors auf "on", nicht auf "1"

    Es ist dringend zu empfehlen, $_GET['page'] ausreichend zu überprüfen (z.B. nur Buchstaben erlauben), da includes mit unsicheren Variablen die häufigste Sicherheitslücke bei eigenen Skripten ist.



  • Wubbel schrieb:

    Es tut mir leid. Mein Fehler!!!
    php.ini muss ja auch display_errors auf 1 sein, damit man Fehler bekommt!
    Entschuldigung noch einmal.

    Und was für eine Fehlermeldung kommt nun?

    Fehlerquelle schon gefunden?
    Wird wahrscheinlich in einer fer Funktionen leigen.


Anmelden zum Antworten