include in include - erbitte Hilfe!

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • include in include - erbitte Hilfe!

    Hallo zusammen,

    ich stehe vor einem kleinen Problem und benötige dringend die Hilfe von Spezialisten. Gleich vorweg: Den nachfolgenden Code habe ich irgendwann wann mal aus einem Tutorial geklaut .

    Folgenes:
    Ich habe eine index.php, welche im content Bereich diesen php Code enthält:

    PHP-Code:
    //In welchem Ordner liegen die Content-Dateien?
    $ContentFolder './content/';

    //Welche Dateien dürfen gelesen werden?
    $suffix = array('htm','html','inc','php');

    //Welche Datei (im Content-Ordner) soll ausgegeben werden wenn keine Seite explizit angegeben wurde?
    $std_site 'main';

    //Welche Datei (im Content-Ordner) soll ausgegeben werden wenn die gewünschte Seite nicht existiert?
    $err404file '';

    //Welcher Text soll ausgegeben werden, wenn die gewünschte Seite nicht existiert?
    $lang['file_not_found'] = '<b>Error 404:</b> Die Seite wurde nicht gefunden!';


    #
    # MAIN-CODE
    #

    function ausgabe($site) {
        global 
    $suffix$ContentFolder;
        
    $includet false;
        foreach(
    $suffix as $one)
        if (
    file_exists($ContentFolder.$site.'.'.$one)) {
            
    readfile($ContentFolder.$site.'.'.$one);
            
    $includet true;
        }
        return 
    $includet;
    }


    if (
    $ContentFolder[strlen($ContentFolder)]!='/'$ContentFolder.='/';




    if (!
    $_GET['site']) $_GET['site']=$std_site;
    $site str_replace('../'''$_GET['site']);

    if (!
    ausgabe($_GET['site'])) {
        echo 
    $lang['file_not_found'];
        
    ausgabe($err404file);
    }

    ?> 
    So, bisher gab es damit auch keinerlei Probleme. Ich hab einfach die verschiedenen Dateien im content Ordner erstellt und sie wurden normal im Mainbereich der index.php ausgegeben. Nun hab ich aber ein Newssystem installiert. Die news.php von diesem möchte ich nun auf der main.php includen. Diese main.php wiederum include ich mittels des php scripts (siehe oben) auf meiner index.php.
    Problem: Wenn ich dies tue, wird der include Befehl der main.php nicht beachtet, sprich: Es passiert nichts!

    Folgendes steht in der main.php:
    PHP-Code:
    <?php
    include("../../webnews/include_this/news.php");
    ?>
    Der Pfad ist nicht falsch, denn wenn ich die main.php alleine aufrufe, führt der include Befehl die Aktion ganz normal durch .

    Was ist nun wo falsch?

    Ich bedanke mich bereits vorweg und hoffe, dass ihr mir helfen könnt.

    Kevin

  • #2
    Hi,

    in deiner Funktion ausgabe() wird nichts includet, sondern per readfile die datei ausgelesen. Da wird kein PHP-Code bei ausgewertet. Du müsstest also schon mit include auch wirklich arbeiten.
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      Oder einfach nocheinmal eval()´n.

      Kommentar


      • #4
        Original geschrieben von Shurakai
        Hi,

        in deiner Funktion ausgabe() wird nichts includet, sondern per readfile die datei ausgelesen. Da wird kein PHP-Code bei ausgewertet. Du müsstest also schon mit include auch wirklich arbeiten.
        Ja, aber wenn ich z.B. nur normal mit "case" arbeite, wird zwar das Newsscript auf der main.php ausgegeben. Doch wenn ich dann auf ein Kommentar o.ä. klicke, kommt eine Fehlermeldung (Datei nicht gefunden).

        Ach verdammt, mich verwirrt das alles .

        Original geschrieben von DerSchonWieder
        Oder einfach nocheinmal eval()´n.
        Könnte du das bitte genauer erläutern? *g*

        Kommentar


        • #5
          eval()
          Assembler ist eine Methode,
          Programme, die zu langsam laufen,
          so umzuschreiben,
          dass sie überhaupt nicht mehr laufen.

          Kommentar


          • #6
            Original geschrieben von TheFish511
            eval()
            Für mich als absoluten Laien in dieser Sache ist das dort erklärte nicht mehr als kryptischer Wirrwar .

            Ich würde euch wirklich sehr dankbar sein, wenn ihr mir eure Vorschläge irgendwie praktisch am Code zeigen könntet.

            Kommentar


            • #7
              wenn ihr mir eure Vorschläge irgendwie praktisch am Code zeigen könntet
              also eval ist evil. das sollte man imho nur im absoluten notfall einsatzen. halt dich lieber an das, was shurakai gesagt hat. ansosten:
              PHP-Code:
              $bla 'blubb';
              $str 'echo $bla;';
              eval (
              $str); 
              gruß
              peter
              Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
              Meine Seite

              Kommentar


              • #8
                Original geschrieben von Kropff
                [B]also eval ist evil. das sollte man imho nur im absoluten notfall einsatzen. halt dich lieber an das, was shurakai gesagt hat. ansosten:
                Ja, also du meinst normal includen? So hier:

                PHP-Code:
                <?php
                    
                if(isset($_GET['section'])) {
                        switch(
                $_GET['section']) {
                        
                /*Neumaschinen*/
                            
                case "news":
                                include 
                "content/news.php";
                                break;

                                                            
                            default:  
                // Wenn eine ungültige Section angegeben wurde
                                    // sollen diese Seite gezeigt werden
                                
                include "news.php";
                                break;
                        }     
                    } else {
                        
                // wenn section nicht angegeben wurde
                        // sollen diese Seite angezeigt werden.
                        
                include "news.php";
                    }
                ?>
                So funktioniert es. Doch nur Augenscheinlich. Denn wenn ich z.B. eine Kategorie wähle oder die Kommentare anzeigen lassen will, geht alles schief.
                Zuletzt geändert von maciwa; 03.04.2008, 23:03.

                Kommentar


                • #9
                  dann schau dir mal GENAU deine get-parameter an. die sollten schon einen einheitlichen namen haben, also "section".

                  gruß
                  peter
                  Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                  Meine Seite

                  Kommentar


                  • #10
                    Original geschrieben von Kropff
                    dann schau dir mal GENAU deine get-parameter an. die sollten schon einen einheitlichen namen haben, also "section".

                    gruß
                    peter
                    Also müsste ich jetzt in dem Newsscript nach allen [GET] Parametern suchen und diese dann durch "section" ersetzen? Puh..

                    Kommentar


                    • #11
                      Original geschrieben von maciwa
                      Also müsste ich jetzt in dem Newsscript nach allen [GET] Parametern suchen und diese dann durch "section" ersetzen? Puh..
                      oder section durch site. sollte aber einheitlich sein. wenn du einen guten editor hast, kannst du das auch einfach mit "suchen & ersetzen" machen.

                      gruß
                      peter
                      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                      Meine Seite

                      Kommentar


                      • #12
                        Original geschrieben von Kropff
                        oder section durch site. sollte aber einheitlich sein. wenn du einen guten editor hast, kannst du das auch einfach mit "suchen & ersetzen" machen.

                        gruß
                        peter
                        Ach jetzt weiß ich was du meinst. Nein, die anderen links spielen bei meinem Problem keine Rolle. Es geht erst mal nur um Newssystem, welches durch klicken auf den Newsbutton im Content Bereich includet wird. Wenn ich dann dort aber auf Kommentare oder auf den Newstitel klicke, erscheint die Fehlermeldung.

                        Kommentar


                        • #13
                          und du kannst keine fehlermeldungen lesen?
                          Warning: main(news.php) [function.main]: failed to open stream: No such file or directory in /var/www/web35/html/test_toschisworld/index.php on line 37
                          entweder ist der pfad falsch oder die datei existiert nicht. außerdem sollte obige meldung eigentlich nur einmal auftauchen. du scheinst das aber zweimal zu probieren.

                          gruß
                          peter
                          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                          Meine Seite

                          Kommentar

                          Lädt...
                          X