"richtige" Dateiendung *.php

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

  • "richtige" Dateiendung *.php

    Ich arbeite mich gerade durch das quakenet:#php Tutorial , hierbei habe ich allerdings Probleme (es geht um die Dateiendung):
    "Wenn sie nicht mit *.php enden, kann jeder Besucher diese Dateien angucken, wenn er weiß wie sie heißen, http://www.example.com/config.txt öffnen und jeder kann z.B. die MySQL Daten sehen. Damit sowas nicht passiert sollte die Datei auf *.php enden, damit, falls man diese Datei direkt öffnet, diese Datei vorher durch PHP geparsed wird und man dann nix sieht. "

    Das stimmt auch, wenn ich den Dateiinhalt in <?php ... ?> stecke, sieht man nicht. Nur: Ich ziehe mir den Inhalt dieser Dateien in meine "Haupt"Datei index.php und dann sehe ich den inhalt hier auch nicht mehr?

    *arggg*, hoffentlich versteht ihr was ich meine...

    THX Ismet

  • #2
    Ich versteh beim besten Willen nicht was du überhaupt für ein problem hast.

    Kommentar


    • #3
      Re: &quot;richtige&quot; Dateiendung *.php

      Original geschrieben von Ismet
      Nur: Ich ziehe mir den Inhalt dieser Dateien in meine "Haupt"Datei index.php und dann sehe ich den inhalt hier auch nicht mehr?
      das soll vermutlich heissen, dass du die dateien mit include/require einbindest?

      wenn du dies über das HTT-Protokoll machst, wird der php-code in den eingebundenen datein schon vorher vom server geparst, dein hauptscript bekommt von diesen also lediglich den erzeugten output geliefert.

      wenn du hingegen den include über das dateisystem machst, wird der php-code der dateien in deine hauptdatei eingebunden. include/require über das dateisystem wirkt (grob verallgemeinert gesprochen) wie ein copy&paste des entsprechenden php-codes an diese stelle.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Hmm, ich glaube, ich würde mich auch nicht verstehen ;-)

        Ich finde es durchaus ersterebenswert, das nicht jeder der www.bladomain.de/dateia.php im Browser eingibt, den Inhalt dieser Datei sieht, wenn diese Datei den Sinn hat, in anderen Code "includet" zu werden.

        Nur: Wenn ich in dieser Datei dateia.php folgenden Inhalt habe:
        <?PHP
        mein text mein text
        ?>
        dann klappt das nicht mehr, was ich unten gezaubert habe. Lasse ich <?PHP weg, so klappt mein Code unten wunderbar, aber man kann sich halt auch den Dateiinhalt "direkt" angucken.

        Ein bischen Code meiner index.php
        <?PHP
        [...]
        $body = file_get_contents ($dateia);
        $footer= 'footer';
        ?>
        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
        <html>
        <head>
        [...]
        <DIV id=all>
        <DIV id=header><?=$header?></DIV>
        <DIV id=middle>
        <DIV id=menue><?=$menue?></DIV>
        <DIV id=detail_header><?=$detail_header?></DIV>
        <DIV id=body><?=$body?></DIV>
        [...]

        Ufff, besser kann ich es euch nicht erklären. So tief stecke ich noch nicht in PHP drin. (Aber es macht großen Spaß!)

        Ismet

        Kommentar


        • #5
          So wie du grad gepostet hast müsste doch eine Fehlermeldung kommen.
          Kommt eine, wenn ja welche.

          PS: Benutze die PHP-Tags des Forums
          it's not a bug,
          it's a feature!

          Kommentar


          • #6
            Jau, so langsam komme ich klar mit diesem Forum. Hier ist also meine ganz index.php. Momentan "ziehe" ich mir so die anderen Dateien da rein. Klappt super, ohne Fehlermeldung. Bis eben auf die Geschichte, die ich heir gerade diskutiere (... und keiner versteht mich *flenn*).

            Ich benutze: XAMPP Version 1.0 mit Apache/2.0.47 (Win32) mod_ssl/2.0.47 OpenSSL/0.9.7b PHP/4.3.3

            PHP-Code:
            <?php
                
                
            switch($_GET['ida']) {
                    case 
            1:
                        
            $dateia 'test1.php';
                        break;
                    case 
            2:
                        
            $dateia 'test2.php';
                        break;
            }
                
                switch(
            $_GET['idb']) {
                    case 
            1:
                        
            $dateib 'dh1.php';
                        break;
                    case 
            2:
                        
            $dateib 'dh2.php';
                        break;
            }

                
            $title 'Hallo, ich bin ein Computer';
                
            $headerfile_get_contents ('header.php');
                
            $detail_header file_get_contents ($dateib);
                
            $menue file_get_contents ('menue.php');
                
            $body  file_get_contents ($dateia);
                
            $footer'footer';
                
            ?>

            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
            <html>
            <head>
            <title><?=$title?></title>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
            <link rel="stylesheet" href="styles.php" type="text/css">
            </head>

            <body background="gfx/karo.gif">
            <div align="center">
                <DIV id=all>  
                    <DIV id=header><?=$header?></DIV>
                        <DIV id=middle>
                            <DIV id=menue><?=$menue?></DIV>
                            <DIV id=detail_header><?=$detail_header?></DIV>
                            <DIV id=body><?=$body?></DIV>
                        </DIV>
                        <DIV id=footer><?=$footer?></DIV>
                    </DIV>
                </DIV>
            </body>
            </html>

            Kommentar


            • #7
              Ich glaube kaum, dass du irgendwie überprüfen kannst, ob du die Seite per include() einbindest oder direkt aufrufst. Die einzige Möglichkeit wäre ein Login-Script zu schreiben und dann zu testen, ob der User eingeloggt ist.
              Wenn nicht wird er zu einer anderen Seite weitergeleitet.

              Dazu muss sich die Seite aber dann in einem Login-Geschützten Bereich befidnen und das soll sie sicherlich nicht, oder?
              it's not a bug,
              it's a feature!

              Kommentar


              • #8
                *schwitz* jetzt verstehe ich dich nicht. Ich habe diese index.html und ziehe mir die jeweiligen Inhalte für meine mit CSS definierten Bereiche rein. Natürlich sind das bis jetzt doof-Texte, später werden das mal "richtige" Inhalte.

                Nur, so wie es zur Zeit mache:
                Gebe ich im Browser 127.0.0.1/temp/Testdatei.php ein, dann sehe ich den Inhalt dieser Datei. Eigentlich soll die aber nur importiert (sprich includet) werden können. Grenze ich den Text in Testdatei.php in PHP-Tags ein, dann geht das direkt über den Browser nicht mehr, nur sehe ich den Inhalt eben auch nicht mehr in meiner index.php, wo er eigentlich rein soll.

                (Es ist verdammt schwer, eine Sache zu erklären, die man gerade erst lernt...)

                Ismet

                Kommentar


                • #9
                  Dann lass das erstmal so. Wenn du dann in php mehr Durchblick hast beschäftige dich mal mit Sessions.
                  it's not a bug,
                  it's a feature!

                  Kommentar


                  • #10
                    Sessions? Alles klar, werde ich mir rein tun.

                    Erstmal bis hierhin vielen Dank!

                    (Auch wenn ich es immer noch nicht verstehe egal, später, ist jetzt auch nicht sooo wichtig)

                    Kommentar

                    Lädt...
                    X