PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : bild.php in css einfügen?



Arnon77
13.06.2009, 16:33
Moin FH'er,

ich habe eine bild.php über die meine Bilder angezeigt werden.
Also z.B "bild.php?name=1234.jpg".

Das Problem ist ich möchte das ganze auch in css verwendet können.
Beispiel:


body {
background-image:url(bild.php?name=1234.jpg);
}

Gibt es da ne Möglichkeit?

VeN0m
13.06.2009, 17:12
Ich denke mal, dass Dein Code (bild.php) etwa so aussieht:



<?php

$bild = $_GET['name'];
$pfad = "/images/";

print "<img src=\"".$pfad.$bild."\">";

?>


Mit mehr Sicherheit wahrscheinlich ;).
CSS kann, wenn ich nicht irre keine GET-Parameter übergeben. Zudem wird die PHP-Datei ja nicht zur Grafik, sondern ruft sie nur auf.
Was ich mir vorstellen könnte, was geht wäre:
Die in diesem Thread besprochene Methode *klick* (http://free-hack.com/showthread.php?t=40152). Ich bezweifele es jedoch.

Kommt denn ein Error, wenn Du es so versuchst?

Und was spricht eigentlich dagegen, dass Du den direkten Pfad zum Bild angibst? Dass jemand den Pfad kennt? Durch die richtigen Vorsichtsmaßnahmen kannst Du doch auch verhindern, dass jemand die Liste aller Bilder in dem Verzeichnis sehen kann (index.html z.B.).

Arnon77
13.06.2009, 17:20
Naja das Problem ist einfach das mein image ordner nur verschlüsselte Bilddateien enthält. Mit hilfe der bild.php wird der code erst entschlüselt und dann mit base64_encode(); und den richtigen image header ausgeben. Deshalb kann ich diese methode nicht benutzen.




Kommt denn ein Error, wenn Du es so versuchst?

Naja er zeigt halt nichts an wenn ich diese Methode verwende. Gibt es den eine möglichkeit den css code mit php zu schreiben und ihn dann zu verwenden?
Das wichtigste ist halt das die bilder nicht temporär gespeichert werden dürfen.




Was ich mir vorstellen könnte, was geht wäre:
Die in diesem Thread besprochene Methode *klick* (http://free-hack.com/showthread.php?t=40152). Ich bezweifele es jedoch.

Und der thread ist übrigens von mir^^

VeN0m
13.06.2009, 17:31
Upps... Hatte nicht darauf geachtet, von wem der Thread war, tut mir leid ;).
CSS geht in PHP, klar. Gibt ja auch folgendes:



<style type="text/css">
...
</style>


Was in PHP dann in etwa sowas ergäbe:



<?php

print "
<style type=\"text/css\">

body {

background-image:url('');

}

</style>
";

?>


Aber ich teste mal eben, ob es bei mir geht, und editiere dann...

EDIT: Die erste Methode konnte ich gerade nicht testen, wegen Zeitmangels. Die Methode von mir geht problemlos, wenn ich "img.php?img=bildname" angebe. Somit müsste es aber auch in einer CSS-Datei gehen. Bist Du Dir sicher, dass das Bild korrekt decodiert wird? Hast Du es mal geprüft?
Denn bei mir geht es, wie gesagt.
Ansonsten poste mal die Strukturen oder übermittle sie mir per PN.
Heißt: bild.php und, wie die Bilddateien aufgebaut sind.

Arnon77
13.06.2009, 17:50
:eek: Upps ich hatte bei meiner css datei, die in einen ordner drüber ist, vergessen die ../ zu machen, da meine bild.php eigentlich nicht im ordner war.

Dachte es geht nicht sorry^^

Aber trozdem vielen dank für die mühe, jetzt geht es einwandfrei^^

Blue-Fox
13.06.2009, 20:34
Mal ne frage: Seit wan gibt es ne .php datei die ein Bild ist ?

VeN0m
13.06.2009, 20:46
Mal ne frage: Seit wan gibt es ne .php datei die ein Bild ist ?

Garnicht. Das hast Du falsch verstanden ;).
Das Bild wurde base64 encodet, damit es keine Sonderzeichen etc. enthält und in den Quellcode geschrieben werden kann. Durch base64_decode wird dann wieder der Bild-Source ausgegeben. Gibt man nun folgendes an:



header("content-type: image/gif");


So wird der Browser dazu gezwungen, die Ausgabe der PHP-Datei als GIF-Bild zu behandeln. Ist die Ausgabe nun der Bild-Source, der decodiert wurde und ist das Ursprungsbild auch tatsächlich vom Typ gif, so wird das Bild tatsächlich angezeigt ;).
Gif ist natürlich nur ein Beispiel, geht auch mit jpg, png etc. Wichtig ist nur, dass die Ausgabe auch mit dem angegebenen Typ übereinstimmt. Es gibt ja auch Funktionen, wie image_create, die ein Bild erstellen (innerhalb der PHP-Datei).

Siehe dafür z.B. das hier:



<?PHP
header('Content-type: image/jpeg');
$image = imagecreate ( 300, 150 );
$farbe_body = imagecolorallocate ( $image, 243, 243, 243 );
$farbe_b = imagecolorallocate ( $image, 10, 36, 106 );
imagestring ( $image, 5,30, 70, 'Free-Hack.com', $farbe_b );
imagejpeg ( $image );
?>


Das ist ein Beispielcode von php.net und nicht von mir ;). Hab' nur den Text geändert.
Siehe auch PHP.net - Imagefunktionen *klick* (http://de.php.net/manual/de/book.image.php)

Natürlich kann auch doc, pdf und ähnliches als Content-Type angegeben werden. Und so wird der Browser die Ausgabe auch behandeln.

Bedenke: Die Ausgabe ist nicht gleich dem Script!