Bilder ohne .htaccess schützen

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

  • 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

    Kommentar


    • #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?

      Kommentar


      • #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
        Zuletzt geändert von Daniela; 08.08.2006, 13:29.

        Kommentar


        • #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 ;-)

          Kommentar


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

            Kommentar


            • #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); 

              Kommentar


              • #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.

                Kommentar


                • #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.

                  Kommentar


                  • #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 :-(

                    Kommentar


                    • #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.

                      Kommentar


                      • #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.

                        Kommentar


                        • #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

                          Kommentar


                          • #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.

                            Kommentar

                            Lädt...
                            X