PDF Dateien schützen

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

  • PDF Dateien schützen

    Hallo und guten Abend,
    seit 3 TAgen nun kämpfe ich mit dem Problem, dass ich PDF Dateien in ein Verzeichnis legen möchte um diese nur angemeldeten Usern zugängig zu machen. Es soll nicht mit .htaccess laufen, sondern ich wollte dieses Verzeichnis oberhalb vom root verzeichnis ablegen. Nun bekomme ich es leider absolut nicht hin diese Datei dann über ein Script aufzurufen. Ich habe unendlich viele Versionen versucht hier aus dem Forum, sowie auch über google. Das Ziel soll eigentlich sein, dass ein User sich anmelden kann und erst nach Authorisierung die Datei downloaden, bzw. anschauen kann. Wenn irgend möglich würde ich es gerne ohne .htaccess machen. Hat jemand eine Hilfe für mich? Ich bin wirklich absolut Ratlos inzwischen. Vorab herzlichen Dank für eure Hilfe es grüßt

    Kicky

  • #2
    Salut

    allenfalls funzt es wenn du die Berechtigungen für das Verzeichnis und die Dateien entsprechend anpasst.

    Ansonsten aber sicherlich mittels htaccess

    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      herzlichen Dank für deine schnelle Antwort. Ich hatte überlegt ob es nicht eine Möglichkeit ist die Dateien oberhalb des Root Verzeichnisses abzulegen, nur bekomme ich sie dann auch über das Script nicht mehr korrekt aufgerufen. Oder hast du dazu noch eine Idee? Danke für die Hilfe

      Kicky

      Kommentar


      • #4
        Ich denke, wenn du in der 3. Zeile ... einfach mal das die() weglässt ... dann dürfte es gehen ... !
        carpe noctem

        [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
        [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

        Kommentar


        • #5
          Original geschrieben von goth
          Ich denke, wenn du in der 3. Zeile ... einfach mal das die() weglässt ... dann dürfte es gehen ... !
          Sorry, aber ich gestehe ich habe im Moment keinen Schimmer was du meinst??

          Kommentar


          • #6
            Das ist schon klar ... !
            carpe noctem

            [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
            [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

            Kommentar


            • #7
              Original geschrieben von goth
              Das ist schon klar ... !
              Wirklich hilfreich ist das nicht. Hast du dich im Thread verirrt? Oder stehe ich auf der Leitung. Sollte der Beitrag ernst gemeint sein wäre ich für einen Ratschlag sehr dankbar. Was hat die() mit meiner Frage zu tun? Ich habe doch nicht mal Code gepostet, da es ja hier um eine Ansatzfrage geht.

              Gruß Kicky

              Kommentar


              • #8
                Re: PDF Dateien schützen

                Original geschrieben von Kicky
                oberhalb vom root verzeichnis
                Ist das root-Verzeichnis nicht das oberste???
                Wie willst du da noch ne Ebene höher?

                Einer der Erfahrenen hat hier die Signatur: i'll try being nicer if you'll try being smarter.

                Könnte also sein, dass du mit sowas net so gut ankommst.^^

                Kommentar


                • #9
                  Er meint wahrscheinlich den htdocs...
                  Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                  [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                  Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                  Kommentar


                  • #10
                    Re: PDF Dateien schützen

                    Ätzend das gelaber! Mal sehen ob ich dir helfen kann....

                    1. Schiebe die PDFs in ein Verzeichnis, auf das ein normalsterblicher keinen Zugriff hat. Das kann auch irgendwo unterhalb von wwwroot sein (der Baum wächst nach unten, wie im Windows-Explorer - deswegen der blöde Kommentar) und per .htaccess geschützt sein.

                    2. Nun brauchst Du ein Skript, das sich die Datei von dort schnappt und an deine User sendet, aber eben nur wenn authentifiziert. Die Authentifizierung solltest du selber hinbekommen, dazu gibt´s ne Menge Infos.

                    Der Aufruf könnte so aussehen:
                    http://www.meinedomain.de/sendfile.p...e=geheimes.pdf

                    Was muss dieses Skript machen?

                    Ganz wichtig ist das senden des richtigen Mime-Tpys im Header. Ansonsten braucht das Skript die Datei nur einzulesen (fopen() etc.) und dann einfach nach senden der Header auszugeben (echo()).

                    Hier mal ein Beispiel:

                    PHP-Code:
                    <?php
                    /**
                    * sendfile.php
                    *
                    * Senden von Dateien aus geschützten Verzeichnissen
                    *
                    * Aufruf: sendfile.php?filename.ext
                    */

                    // Authentifizierung prüfen - wie man´s will...
                    require("auth.inc.php");



                    // Pfad zum Verzeichnis mit unseren Dateien
                    $strFileDir("/temp/pdfs/");  // Slash am Ende nicht vergessen


                    $strRequestedFile basename($_GET["file"]); // SICHERHEIT: basename ist wichtig



                    // Wurde eine file übergeben?
                    if ($strRequestedFile) {
                        
                        
                    $strFilePath $strFileDir.$strRequestedFile;
                        
                        
                    // existiert die Datei?
                        
                    if (file_exists($strFilePath)) {
                            
                            
                    $intFilesize filesize($strFilePath);

                            
                    /**
                            * Bestimmung des MIME-Dateityps
                            * Das ist knifflig. Man kann entweder anhand der Endung oder über die
                            * Funktion mime_content_type() den MIME-Type bestimmen. Machen wir´s mal
                            * mit der Endung. Hier nur ein paar Beispiele.
                            * Mehr Mime-Types unter: http://www.iana.org/assignments/media-types
                            */
                            
                    $strExtension lower(substr($strFilePath,strrpos($strFilePath,'.'),10));
                            
                            switch (
                    $strExtension) {
                                case 
                    '.txt'$strMimeType 'text/plain';
                                             break;
                                case 
                    '.pdf'$strMimeType 'application/pdf';
                                             break;
                                case 
                    '.doc'$strMimeType 'application/msword';
                                             break;
                                default    : 
                    $strMimeType 'application/octet-stream';
                                             break;
                            }

                                             

                            
                    /**
                            * Header senden, kein Caching
                            */
                            
                    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
                            
                    header("Last-Modified: " gmdate("D, d M Y H:i:s") ." GMT");
                            
                    header("Cache-Control: no-cache");
                            
                    header("Pragma: no-cache");
                            
                    header("Cache-Control: post-check=0, pre-check=0");

                            
                    header("Content-Type: $strMimeType");
                            
                    header("Content-Length: $intFilesize");
                            
                    header("Content-Disposition: attachment; filename=\"$strRequestedFile\"");
                            
                    header("Content-Description: PHP Generated Data");

                            
                    /**
                            * Ausgabe der Datei in Blöcken von 4KB
                            */
                            
                    $fd fopen ($strFilePath"rb");  // "rb" statt nur "r" ist für Windows-Systeme wichtig!!!
                            
                    while(!feof($fd)) {
                                   echo 
                    fread($fd,4096);
                               }
                            
                    fclose ($fd);
                            
                        } else {
                            
                    // Datei wurde nicht gefunden
                            
                    echo "FILE NOT FOUND";
                        }
                    } else {

                      
                    // Es wurde keine id übergeben
                      
                    echo "NO FILE";
                    }


                    ?>
                    Ich hoffe das hilft dir.
                    Zuletzt geändert von cst; 22.02.2005, 20:16.
                    Ich denke, also bin ich.
                    Manche sind trotzdem!

                    Kommentar


                    • #11
                      Na ... ist der Anfall von Posing vorbei ... ?!

                      Hier ... noch was zum lesen ... damit auch Du nicht dumm stirbst ... !
                      http://www.faqs.org/rfcs/rfc2616.html
                      http://www.php.net/manual/en/function.pathinfo.php
                      http://www.php.net/manual/en/function.readfile.php
                      carpe noctem

                      [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                      [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                      Kommentar


                      • #12
                        Original geschrieben von goth
                        Ich denke, wenn du in der 3. Zeile ... einfach mal das die() weglässt ... dann dürfte es gehen ... !
                        er kann aber auch die Zeile 42 löschen, funz genauso gut

                        Kommentar


                        • #13
                          Hallo und Danke für die Hilfe,
                          ich habe versucht es umzusetzen, aber der IE stößt auf Probleme mit dem Header. Auf diese Schwierigkeiten war ich vorher schon gestoßen und bekomme sie nicht gelöst. Ich werde wohl weiter nach einer anderen Lösung suchen wollte mich aber für die tolle Hilfe von "CT" bedanken.

                          Herzliche Grüße
                          Kicky

                          Kommentar


                          • #14
                            Original geschrieben von Kicky
                            ich habe versucht es umzusetzen, aber der IE stößt auf Probleme mit dem Header.
                            Hmmm... verstehe ich nicht. Bei mir klappt das mit Firefox, IE 5.5 und IE 6. Mehr habe ich aber nicht getestet.
                            Ich denke, also bin ich.
                            Manche sind trotzdem!

                            Kommentar


                            • #15
                              TIPP
                              Untersuche mal den HTTP-Datenstrom von Seiten, bei denen der PDF-Download funktioniert. Das kannst Du per Telnet machen. Wenn du Windows benutzt, mache das so:
                              * Start->Ausführen->cmd.exe
                              * Am Prompt gibst Du ein telnet www.irgendeinserver.de 80
                              * und dann im Telnet GET http://www.irgendeinserver/test.pdf

                              Am Anfang der nun erscheinenden Ausgabe bekommst Du die Header angezeigt. irgendeinserver.de und die URL der pdf-Datei mußt du natürilich anpassen.
                              Wahrscheinlich scrollt dir die Ausgabe aus dem Bildschirm. Damit mit das dennoch sehen kannst, mußt du für das CMD-Fenster die Fensterpuffergröße hoch setzen (2000 Zeilen oder mehr). Die Option erreichst Du über einen Rechtsklick auf das Icon des Fensters (links oben) -> Eigenschaften -> Layout.
                              Nun kannst du das gleiche mit deinem Skript machen und die Header vergleichen und dein Skript ggfs. anpassen.
                              Ich denke, also bin ich.
                              Manche sind trotzdem!

                              Kommentar

                              Lädt...
                              X