.htaccess - Bilder unzugänglich machen

Übersicht Sonstiges Smalltalk

Neue Antwort erstellen

TheProgrammer

Betreff: .htaccess - Bilder unzugänglich machen

BeitragFr, Okt 26, 2007 17:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Smile

Ich wollte mal fragen, ob sich hier jemand mit der .htaccess auskennt.
Auf meinem Server sollen bestimmte Dateien (Bilder) unzugänglich gemacht werden, jedoch auf der Homepage angezeigt werden können.

Ich hoffe, ihr könnt mir da weiterhelfen. Wäre sehr nett.. Smile
Danke schonmal im Voraus.

Mfg
TheProgrammer
aktuelles Projekt: The last day of human being
 

ChristianK

BeitragFr, Okt 26, 2007 17:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Was hat das für einen Sinn? Wenn die Bilder auf der Seite angezeigt werden, hat sie der Browser vorher runtergeladen und sie befinden sich dann auf der Festplatte. Oder der Benutzer macht Rechtsklick->Bild speichern und bekommt sie so auf seinen Rechner.

Du kannst allerdings das Verzeichnis der Bilder unzugänglich machen mit "Deny from all" und dann über ein PHP-Skript das Bild laden. Ist aber genau so sinnfrei.
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT

TheProgrammer

BeitragFr, Okt 26, 2007 17:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja.. ich habe viele Bilder in einem Ordner, von denen nur ein bestimmtes angezeigt werden darf. Die anderen sollen sozusagen geheim bleiben.. ^^ Denn wenn man die URL von dem angezeigten Bild hat, kann man auch auf die anderen schließen. Das angezeigte Bild ändert sich auch ständig.


edit: Hmm, wie würde denn das genau aussehen in der .htaccess und im php-script?
aktuelles Projekt: The last day of human being

D2006

Administrator

BeitragFr, Okt 26, 2007 18:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde das nur bedingt mit .htaccess machen.

Mach ein PHP-Script, was ein Bild ausliest (mit readfile, aber Achtung: Vorher passende Header ausgeben!) und schütz das komplette Verzeichnis, in welchem die Bilder drin sind per .htaccess. Das Script hat ja trotzdem noch Zugriff auf die Bilder. Nachteil ist allerdings, dass cachen nicht geht. Aber so wie ich dich verstanden habe, muss das auch nicht gehen.

EDIT:

Das Script ungefähr so:
Code: [AUSKLAPPEN]
                $len = filesize( $pfad );
                header("Pragma: public");
                header("Expires: 0");
                header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
                header("Cache-Control: public");


                $ext = substr($pfad ,-4);
                $ext = strtolower($ext);

                if($ext==".jpg")
                    header("Content-Type: image/jpeg");
                elseif($ext==".png")
                    header("Content-Type: image/png");
                else($ext==".gif")
                    header("Content-Type: image/gif");

                header("Content-Transfer-Encoding: binary");
                header("Content-Length: ".$len);
                readfile( $pfad );


Und die .htaccess... musste mal googlen. Halt alle Zugriffe in einem Verzeichnis sperren. Das Script ist dann halt in einem übergeordneten Verzeichnis.
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

TheProgrammer

BeitragFr, Okt 26, 2007 18:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Cool, Danke für die Antwort. Smile

Hmm, aber irgendwie werden mir bei dem Skript nur Fehler ausgegeben:

Code: [AUSKLAPPEN]

Warning: filesize() [function.filesize]: stat failed for /pic/image1.jpg in /home/dubsoft/public_html/index.php on line 51

Warning: Cannot modify header information - headers already sent by (output started at /home/racheex/public_html/index.php:6) in /home/dubsoft/public_html/index.php on line 52

Warning: Cannot modify header information - headers already sent by (output started at /home/racheex/public_html/index.php:6) in /home/dubsoft/public_html/index.php on line 53

Warning: Cannot modify header information - headers already sent by (output started at /home/racheex/public_html/index.php:6) in /home/dubsoft/public_html/index.php on line 54

Warning: Cannot modify header information - headers already sent by (output started at /home/racheex/public_html/index.php:6) in /home/dubsoft/public_html/index.php on line 55


Ich habe nur die ersten 5 Zeilen gelassen, da der Fehler

Code: [AUSKLAPPEN]
Parse error: syntax error, unexpected T_STRING in /home/dubsoft/public_html/index.php on line 68


kommt, wenn ich alles so lasse. Der Pfad des Bildes stimmt.

Mfg
TheProgrammer
aktuelles Projekt: The last day of human being

Blitzcoder

Newsposter

BeitragFr, Okt 26, 2007 19:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Der PHP Code muss ganz am Anfang stehen, da der Header zuerst kommen muss. D.h. es darf kein echo, kein print und kein HTML-Code, auch kein Leerzeichen sein.
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________
|°°°°°°°°°°°°°°||'""|""\__,_
|______________ ||__ |__|__ |)
|(@) |(@)"""**|(@)(@)****|(@)

TheProgrammer

BeitragFr, Okt 26, 2007 19:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm. Der Fehler bleibt:

Code: [AUSKLAPPEN]
Parse error: syntax error, unexpected T_STRING in /home/dubsoft/public_html/index.php on line 23


Die Zeile ist diese:

Code: [AUSKLAPPEN]
header("Content-Type: image/gif");



edit: Hab den Fehler gefunden.. das letzte else muss elseif sein.. ^^ trotzdem kommen immernoch diese Warnungen: Cannot modify header information .. und das Bild wird nicht angezeigt.
aktuelles Projekt: The last day of human being

PowerProgrammer

BeitragFr, Okt 26, 2007 20:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Nutzt du UTF-8? Öffne die Datei mal mitm Hex-Editor und entferne die Zeichen vor dem <?php am Anfang. Vielleicht gehts dann.

Es ist halt so, du musst die Headerbearbeitung vor dem ersten Senden irgendeines Drecks abgeschlossen haben, sonst hast du ein Problem. Notfalls kannst du auch mit ob_start() und so buffern...
www.xairro.com Alles für Webmaster und Programmierer! Es gibt mehr als bloß einen Counter!

D2006

Administrator

BeitragFr, Okt 26, 2007 20:52
Antworten mit Zitat
Benutzer-Profile anzeigen
mach aus dem else ein elseif. Sorry, hab da was entfernen wollen, was blöd war zu entfernen.
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

TheProgrammer

BeitragSo, Okt 28, 2007 12:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah, cool Smile Es funktioniert. ^^ Da waren bloß ein paar Leerzeichen vor dem <?php... Aber wieso wird jetzt nicht mehr das angezeigt, was nach dem Auslesen des Images kommt? Es wird jetzt nur das Bild angezeigt.

edit: Ah, ich habs. Smile Ich muss also die .php-Datei wie ein Image in HTML laden. Smile

Vielen Dank an euch. SmileSmileSmile Ich habt mir sehr geholfen.

Mfg
TheProgrammer
aktuelles Projekt: The last day of human being

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group