img-Tag und php-Datei benutzen
xstream
- php
Hallo
Ich möchte eine php-datei in einen img-Tag einbinden, so wie das hier: <img scr='irgendwas.php?id=5'>
die Id wird benötigt, um ein bild aus einer Datenbank zu lesen. Wie muss nun aber die php-Datei programmiert sein, das es dieses Bild ausgibt? ich habe es einfach nicht geschaft.
Vielen Dank!
Hallo xstream,
Wie muss nun aber die php-Datei programmiert sein, das es dieses Bild ausgibt?
Was hast du denn bisher geschafft?
Letztlich muss dein Script nur den richtigen Content-Type-header senden und anschließend das Bild ausgeben...
Grüße
David
ich hab einfach eine php-datei gschrieben, in der ein echo "<img scr='$url'>"; steht...
kannst du vieleicht ein beispiel machen?
Hallo xstream,
ich hab einfach eine php-datei gschrieben, in der ein echo "<img scr='$url'>"; steht...
Naja, dann bekommst du jenen image-Tag ausgegeben, nicht aber das Bild.
kannst du vieleicht ein beispiel machen?
Im </archiv/> wird es sicher etwas geben. Schau dich auch einmal auf http://php3.de/image um, dort wirst du ebenfalls fündig.
Grüße
David
hallo, habe gerade in diesem moment das gleiche problem (siehe (siehe mein posting unter http://forum.de.selfhtml.org/?t=91306&m=549055) und habe hier etwas dazu gefunden:
http://www.webwork-community.net/posting2624_23_0.html
Demnach sähe das so ungefähr aus:
<?php
error_reporting (E_PARSE);
header("Content-type: image/jpeg");
header("Content-Disposition: attachment; filename=Bild1.jpg");
header("Content-Length: " . filesize(getcwd() . "/bilder/Bild1.jpg"));
readfile(getcwd() . "/bilder/Bild1.jpg");
?>
Bereite das gerade bei mir lokal vor, um es zu testen
ok vielen dank! müsste gehen...
ok vielen dank! müsste gehen...
Nein, habe es getestet und leider geht es NICHT.
So sieht mein Code in der Datei aus, wobei file und path übergeben werden mittels <img src="dateiname.php?file=test.jpg&path=test">:
<?php
// Variable holen
$_GET["file"];
$_GET["path"];
// Welcher Typ?
if (substr($file,-4) == ".gif") {$type = "gif";}
if (substr($file,-4) == ".jpg" or substr($file,-5) == ".jpeg") {$type = "jpeg";}
// Header senden
header("Content-type: image/$type");
header("Content-Disposition: attachment; filename=$file");
header("Content-Length: " . filesize(getcwd() . "$path/$file"));
readfile(getcwd() . "$path/$file.jpg");
?>
Gibt man den Pfad zur Datei inklusive Variablen-Angaben direkt im Browser ein, dann starten IE und NS das Dateidownload-Fenster...
Mist...
Korrektur:
readfile(getcwd() . "$path/$file.jpg");
muss natürlich heissen
readfile(getcwd() . "$path/$file");
Ändert aber nichts daran, dass es nicht funzt.
bei mir geht es ohne probleme...:
<?php
include('../config.php');
mysql_connect($dbhost,$dbuser,$dbpasswd);
mysql_select_db($dbname);
$sql="SELECT * FROM webring WHERE id='$_GET[id]'";
$counter=mysql_result(mysql_query($sql),0,'counter');
@$counter=$counter/1000;
$counter=$counter*10;
$counter=round($counter);
$img="ranks/$counter.gif";
if ($counter>10) {
$img="ranks/10.gif";
}
header('Location: '.$img.'');
error_reporting (E_PARSE);
header("Content-type: image/jpeg");
header("Content-Disposition: attachment; filename=$counter.gif");
header("Content-Length: " . filesize(getcwd() . "$img"));
readfile(getcwd() . "$img");
?>
mach mal no das hinein: vor error_:
header('Location: '.$img.'');
hi,
bei mir geht es ohne probleme...:
... und ist trotzdem ziemlich falsch.
header('Location: '.$img.'');
hiermit löst du einen redirect auf eine andere adresse aus.
da in $img allerdings kein absoluter URL steht, noch dazu fehlerhaft.
error_reporting (E_PARSE);
header("Content-type: image/jpeg");
header("Content-Disposition: attachment; filename=$counter.gif");
header("Content-Length: " . filesize(getcwd() . "$img"));
readfile(getcwd() . "$img");
?>
das alles kommt gar nicht mehr beim client an, da du ja vorher bereits einen redirect gemacht hast.
dieses vorgehen ist unfug.
gruß,
wahsaga
mach mal no das hinein: vor error_:
header('Location: '.$img.'');
Super, danke. Hatte außerdem einen Fehler in meinen Pfad-Angaben.
Funktionieren tut das bei mir jetzt so, nur falls das mal jemand anderes hier interessiert:
<?php
// Variable holen
$_GET["file"];
$_GET["path"];
$pathfile = $path."/".$file;
// Welcher Typ?
if (substr($file,-4) == ".gif") {$type = "gif";}
if (substr($file,-4) == ".jpg" or substr($file,-5) == ".jpeg") {$type = "jpeg";}
// Header senden
header('Location: '.$pathfile.'');
header("Content-type: image/$type");
header("Content-Disposition: attachment; filename=$file");
header("Content-Length: " . filesize(getcwd() . "$pathfile"));
readfile(getcwd() . "$pathfile");
?>
ABER leider umgeht diese Funktion nicht den htaccess-Schutz - so bin ich ja erst auf das Problem gestossen....
siehe http://forum.de.selfhtml.org/?t=91306&m=549055
Trotzdem vielen Dank
hi,
ABER leider umgeht diese Funktion nicht den htaccess-Schutz - so bin ich ja erst auf das Problem gestossen....
natürlich nicht, weil auch du immer noch versuchst, per location-header die datei _direkt_ vom client anfordern zu lassen.
gruß,
wahsaga
hi,
Gibt man den Pfad zur Datei inklusive Variablen-Angaben direkt im Browser ein, dann starten IE und NS das Dateidownload-Fenster...
ja genau dazu forderst du den client doch auch auf, mit folgendem header:
header("Content-Disposition: attachment; filename=$file");
unter http://www.webwork-community.net/posting2624_23_0.html steht doch übrigens auch explizit im eingangsposting, dass es um einen _download_ (ersatz für "speichern unter ...") des bildes geht.
gruß,
wahsaga
Hallo,
unter http://www.webwork-community.net/posting2624_23_0.html steht doch übrigens auch explizit im eingangsposting, dass es um einen _download_ (ersatz für "speichern unter ...") des bildes geht.
Ja, stimmt!!
Und dass mit header:location einfach die neue Seite geladen wird, weiß ich eigentlich auch. Das ist wirklich Unfug.
Habe schon eine Matschbirne von dem ewigen Herumgefusel an diesem Sch*-Problem. Eigentlich will ich das Bild deswegen über ein Script holen, damit ich einen htaccess-Schutz umgehen kann, wie gesagt, siehe http://forum.de.selfhtml.org/?t=91306&m=549055