Bilder ohne .htaccess schützen

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Bilder ohne .htaccess schützen

    Hallo!

    Ich habe eine Frage bezüglich Bildschutz.
    Folgendes Problem:
    Ich habe bis jetzt auf meiner Seite meine Gallerien immer mit .htaccess geschützt, was auch prima funktioniert. Doch jetzt habe ich eine eleganteres login script endteckt.
    Nun können sich die Leute einloggen (ohne primitives popup) und alles läuft perfekt. Wenn ich jetzt einen link auf meine gallerie setzte, ist klar, dass dann htaccess wieder ein passwort verlangt. Wie kann ich das "umgehen" oder anders machen? So dass man nur einmal eine Passworteingabe machen muss?
    Ich will einerseits, dass die *.jpg's vor direktaufruf geschützt sind (im moment htaccess), andererseits will ich eine login Seite (php) haben?

    Ich hoffe ich habe das nicht zu kompliziert erklärt ;-)

  • #2
    erstmal das bilderverzeichnis komplett dicht machen, auch per .htaccess
    Code:
    Order deny,allow
    Deny from all
    dann die bilder mit einer php-datei auslesen (lade_bild.php?bild=tolles_bild.jpg). diese datei überprüft, ob der benutzer angemeldet ist (sessions?) sendet den entsprechenden header("Content-Type: image/jpeg"); und schickt das bild zum browser.

    fertig

    Comment


    • #3
      Hy 3DMax !

      Also ich hab mich gestern und heute ein wenig damit beschäftigt, aber irgendwie habe ich das nicht so hinbekommen wie ich wollte ;-(

      Jetzt habe ich die htaccess eingabe gelassen (also Benutzername- und Passworteingabe per popup) und in dem file das angezeigt wird folgenden code hinterlegt

      PHP Code:
      <?php
         
      echo "Hy <b>".$PHP_AUTH_USER."</b>, du hast dich erfolgreich eingeloggt!";
      ?>
      Jetzt wird angezeigt:
      Hy limp, du hast dich erfolgreich eingeloggt!
      Mit dem könnte ich mich ja auch zufrieden geben. habe zwar noch immer das Pop up aber egal.

      Jetzt aber eine weitere Frage. Ist es möglich bei verschiedenen Benutzern verschiedene Begrüßungstexte zu hinterlegen bzw. Bilder?

      PHP Code:
       if($PHP_AUTH_USER="admin") { 
                 echo 
      "Guten Tag <b>admin</b>, Herzlich willkommen",
                } else { 
          echo 
      "Hy <b>".$PHP_AUTH_USER."</b>, du hast dich erfolgreich eingeloggt!";
                } 
      Wie man sieht habe ich nicht bzw gar keine Ahnung von php ;-) aber wie müsste das richtig lauten? und wie kann man für verschiedene benutzer Bilder hinterlegen? ist das möglich, wenn ja könnten dann jemand hier einen code posten?

      Comment


      • #4
        Nun können sich die Leute einloggen (ohne primitives popup) und alles läuft perfekt
        willst du nun ein login skript oder was genau hast du vor?

        wenn es dir um ein loginskript geht dann schau mal in den codeschnipsel, ich persönlich find da das von Abraxax recht schön.

        Und um nun die Bilder zu schützen kannst ruigh bei deinem htaccess bleiben. da ändert sich nur die URL zu den Bildern.

        Und zwar von <img src=imagefolder/example.jpg> auf
        <img src=imagefolder/lade_bild.php?bild=BILDNAME>

        // edit: die datei: lade_bild.php ist eine einzige Datei die NUR dafür da ist Bilder zu öffnen ( mit header(...) ). Damit umgehts du quasi den htaccess schutz.

        (siehe post von 3DMax)


        ist ansich wirklich einfach, probiers einfach mal.

        lg, dani
        Last edited by Daniela; 08-08-2006, 13:29.

        Comment


        • #5
          Ja ich will ein Login script, nur habe ich es nach dem post von 3DMax aufgegeben, und mich mit anderen Lösungen auseinander gesetzt.

          Und wie hat die lade_bild.php auszusehen?

          PHP Code:
          <?php
              header
          ("Content-Type: image/jpeg"); 
               
          ?>
          muss man da noch irgendwo "$bild=" oder so reinschreiben? Denn wie soll sonst <img src=imagefolder/lade_bild.php?bild =BILDNAME> funktionieren?


          Ich hoffe ich bekomme jetzt nicht eine auf den Kopf wegen der Frage ;-)

          Comment


          • #6
            PHP Code:
            <?php
              header
            ("Content-Type: image/jpeg");
              
            readfile($bild);
            ?>

            Comment


            • #7
              Original geschrieben von limp
              Und wie hat die lade_bild.php auszusehen?
              ich skizziere das mal ganz grob, will dich jetzt nicht weiter verwirren
              nur damit du siehst, dass das ganz einfach ist.
              achtung, nur ein einfaches beispiel, nicht übernehmen!

              PHP Code:
              // Todo: Überprüfen, ob Benutzer angemeldet ist

              // Hier befinden sich alle Bilder
              $bildpfad='bilder/';

              // Pfad zu dem Bild zusammensetzen
              // Achtung, es wird nichts überprüft !!!!
              $bild=$bildpfad.$_GET['bild'];

              // Header setzen und Bild ausgeben
              header("Content-Type: image/jpeg");
              readfile($bild); 

              Comment


              • #8
                ...habe jetzt ein wenig herumgespielt und ein paar teile von 3DMAX übernommen.
                jetzt erhalte ich
                URL file-access is disabled in the server configuration in ....
                Bedeutet das, dass der Provider irgendwelche Funktionen abgeschaltet hat, die ich benötige? Oder liegt da noch der Fehler in meinem script?

                Und danke, dass ihr noch so freundlich und geduldig mit mir umgeht.

                Comment


                • #9
                  das bedeutet, dass fopen wrappers nicht aktiv sind, die benötigst du aber auch nicht, da du über das filesystem zugreifen musst.
                  zeig mal code.

                  Comment


                  • #10
                    also meine lade_bild.php
                    PHP Code:
                    <?php
                      $bildpfad
                    ='http://provider.de/ordner/ordner2/ausfahrt/';
                      
                    $bild=$bildpfad.$_GET['bild'];
                      
                    header("Content-Type: image/jpeg");
                      
                    readfile($bild);
                    ?>
                    Sobald $bild=$bildpfad.$_GET['bild']; drinnen steht kommt der Fehler, dann hab ich das mal weg gelassen...Weil laut Daniela das ganze auch nur so auszusehen hat
                    PHP Code:
                    <?php 
                     header
                    ("Content-Type: image/jpeg");
                     
                    readfile($bild); 
                     
                    ?>
                    Und die Datei in der ich mir das Bild ansehen möchte(bild.php):
                    PHP Code:
                    <img src=lade_bild.php?bild=http://provider.de/ordner/ordner2/ausfahrt/ausfahrt01.jpg>
                    <img src=lade_bild.php?bild=ausfahrt01.jpg
                    Und ich bekomme nichts zu gesicht. Vielleicht passt irgendwas mit den Pfadeinstellungen noch nicht so ganz..

                    Dann habe ich mal
                    PHP Code:
                    <?php
                    include 'lade_bild.php';
                    $bild=$bildpfad.$_GET['bild'];
                         
                    ?>
                    Probiert, um $bild mal in die bild.php zu schreiben.
                    Bin schön langsam verzweifelt, weil ich das nicht check :-(

                    Comment


                    • #11
                      Original geschrieben von limp
                      [B]also meine lade_bild.php
                      PHP Code:
                      <?php
                        $bildpfad
                      ='http://provider.de/ordner/ordner2/ausfahrt/';
                      ...
                      ?>
                      $bildpfad darf kein url sein, daher auch dein obiger fehler. so müsste es aussehen:
                      PHP Code:
                      $bildpfad=ordner/ordner2/ausfahrt/'; 
                      und der bildlink dazu:
                      Code:
                      <img src="lade_bild.php?bild=ausfahrt01.jpg">
                      damit sollte dein beispiel klappen.
                      ist noch die frage, ob sich alle bilder im selben pfad befinden, dann muss noch etwas geändert werden.

                      Comment


                      • #12
                        um mal ein kleines erfolgserlebnis zu haben:

                        kopier mal folgende php datei und ein jpeg bild names test.jpg in den selben ordner und rufe dann die php datei auf.

                        <?php
                        header("Content-Type: image/jpeg");
                        readfile("test.jpg");
                        ?>


                        dann kannst du stück für stück das skript verbessern.
                        anfangen würd ich mit dem bildpfad manuell hinschreiben, dann als variable, dann bildnamen als variable... dann $_GET .... etc.

                        PS: die grundfunktion von max und meinem skript sind identisch

                        kopf hoch, das wird schon noch.

                        Comment


                        • #13
                          Hey es hatt geklappt. Unglaublich aber wahr ;-)
                          nachdem ich $bildpfad=ordner/ordner2/ausfahrt/'; richtig gestellt habe, ist auch nicht mehr die Fehlermeldung gekommen. Und dann hat das mit dem link und vor allem dem Bild auch geklappt.

                          Und was macht der Befehl:
                          PHP Code:
                          $bild=$bildpfad.$_GET['bild']; 
                          jedenfalls ist jetzt mal das Gröbste geschafft, mit der Gallerie und den Login werd ich mich noch spielen, so dass ich das hinbekomme wie ich will.
                          Aber es ist nicht möglich ganze files wie gallery.php zu erhalten und die .htaccess zu umgehen, oder? Denn sonst hätte die ja gar keinen Sinn!?

                          Herzlichen dank für die ausdauernde und freundliche Hilfe

                          Comment


                          • #14
                            Original geschrieben von limp
                            Hey es hatt geklappt. Unglaublich aber wahr ;-)
                            gratuliere - kaum machts man's richtig, klappt es auch
                            Und was macht der Befehl:
                            PHP Code:
                            $bild=$bildpfad.$_GET['bild']; 
                            er fügt zum definierten bildpfad das eigentliche bild hinzu. bild ist der parameter, der "lade_bild.php" mit dem GET-parameter "?bild=name_des_bildes" übergeben wird.
                            dieser parameter muss später noch unbedingt geprüft werden, damit nicht soetwas möglich ist: "?bild=../andere_datei_die_eigentlich_geheim_ist"
                            Aber es ist nicht möglich ganze files wie gallery.php zu erhalten und die .htaccess zu umgehen, oder? Denn sonst hätte die ja gar keinen Sinn!?
                            bisher fehlt noch jegliche sicherheit, siehe prüfung von "?bild=parameter", man kann jede datei aufrufen! auch der htaccess-schutz ist jetzt quasi ausgehebelt, darum muss noch eine überprüfung stattfinden, ob der benutzer überhaubt angemeldet ist (siehe php-kommentar in meinem groben bsp.).

                            aber spiele jetzt erstmal ein bisschen und mach dich damit vertraut.
                            wir helfen dir dann gerne weiter.

                            Comment

                            Working...
                            X