Hallo ich habe folgendes Problem.
Im HTML File hab ich folgende Zeile:
<img alt="test" src="bild.php?id=123" />
In bild.php wird logischerweise das korrekte Bild geholt. In dieser Datei steht zudem folgendes.
if($_SERVER["SCRIPT_NAME"]==$_SERVER["PHP_SELF"]) {
....
}
Er überprüft ob das File direkt aufgerufen wird und würde an dieser Stelle ein Wasserzeichen einfügen. Wenn es im HTML File angezeigt wird sollte das dann nicht der Fall sein, ist es aber.
Wieso?
Er überprüft ob das File direkt aufgerufen wird Wie kommst du zu der Annahme? Mal Testausgaben gemacht, bzw. logisch drüber nachgedacht?
klar hab ich das, ist tatsächlich so :)
Dann fang mal an zu begründen.
Berücksichtige dabei, dass HTTP ein zustandsloses Protokoll ist und dass der Browser dir nicht verrät, wo er die daten, die er gerade anfordert, anzeigt.
Ok, sry mein fehler, wie kann ich das denn in PHP überprüfen ob ein File included worden ist?
gar nicht, weil php serverseitig abläuft und davon nichts mitbekommt...
Evtl. kannst du dein Vorhaben mit Sessions realisieren. Hatten wir schonmal hier...
hab vorher bereits gesucht aber noch nichts gefunden, weisst du noch wie der thread hiess?
such mal nach download oder bild
jahlives
26-01-2006, 20:03
@zimmbi
Wenn der Browser eine Seite lädt, dann führt er nicht nur einen Request aus, sondern immer einen pro Bildressource. Also fragt der Browser die in img src definierte URL ab und lädt somit das Bild. Einen direkten Aufruf von name.jpg kannst du nicht wirklich verhindern, denn das Bild ist jpg und kann daher keinen PHP Code enthalten, der feststellen könnte ob das Bild von deiner bild.php oder direkt ausgerufen wird.
Du kannst aber zumindest das direkte Aufrufen des Bildes mittels einer htaccess Datei unterbinden. In dem Verzeichnis wo deine Bilder liegen legst du eine .htaccess Datei an (geht natürlich nur wenn du einen Häuptling als Server betreibst). In dieser legst du fest, dass Zugriffe auf dieses Verzeichnis nur lokal erlaubt sind. D.h. nur Scripte in deinem Webspace können darauf zugreifen.
Gruss
tobi
<img alt="test" src="bild.php?id=123" /> Soviel zum Thema "Dein Bild ist JPG". (Nicht dass man nicht auch JPG-Dateien parsen könnte...)
jahlives
26-01-2006, 21:36
Ich habe den Topicstarter so verstanden, dass er bei Aufrufen des Bildes, die direkt und nicht via sein bild.php laufen, ein Wasserzeichen einbinden will. Also bei Aufrufen a la name.ext.
Ok man könnte ja wirklich die Bilddateien auch durch den Parser jagen. Aber macht das Sinn ?
Stellt sich die frage, woher der User den echten Pfad zum Bild kennen sollte :)