zobrazeni obrazku z databáze

mám problém se zobrazením obrázku z databáze, obrázek je už vložen v databázi ale nezobrazí se:

...
$zobraz = mysql_fetch_assoc($query);
header('Content-Type: image/jpg'); //zkoušel jsem i header('Content-Type: image/jpeg');
echo $zobraz['obrazek'];

obrázek se nezobrazí ale místo něj se zobrazí klikyháky:

˙Ř˙ŕJFIFZZ˙ŰC    $.' ",#(7),01444'9=82<.342˙ŰC  2!!22222222222222222222222222222222222222222222222222˙Ŕ–—" ˙Ä ˙ĵ}!1AQa"q2?‘ˇ#B±ÁRŃđ$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz?„…†‡?‰

nevíte v čem by mohl být problém?
ukaz celej kod
Nedávej obrázky do DB! Fuj!
Mike :

$select = ("SELECT * FROM tabulka");
$query = mysql_query($select);
if($query)
{
header('Content-Type: image/jpeg');
$zobraz = mysql_fetch_assoc($query);
echo "<table width='500' height='300' border='0'";
echo "<tr><td>";
echo "$zobraz[obrazek]";
echo "</td></tr>";
echo "</table>";
}

Tom:

v tomhle případě obrázky vkládat můžu jen já (myslím tím že žádný uživatel nebude mít ani šanci) a pro mě je to momentálně nejlepší pro správu
medion (renet.borec.cz)
cz.php.net/header
konkretne TYPE = image/jpeg treba nastavit hlavickou
header('Content-Type: image/jpeg');
coz tam mas, ale v tom pripade tam nema, co delat tag TABLE,
protoze header nastavujes hlavicku celeho souboru. Cili v souboru IMAGE se vyskytuji IMAGE data, zadne table.

co treba udelat PHP soubor zobraz_obrazek.php?id=5, kde bude jen:
$id = GET['id']; //isset...
$select = ("SELECT * FROM tabulka WHERE id=$id");
$query = mysql_query($select);
if($query)
{
header('Content-Type: image/jpeg');
$zobraz = mysql_fetch_assoc($query);
echo "$zobraz[obrazek]";
}
a tam pak das
<IMG src="zobraz_obrazek.php?id=5">
peťula:

podmínku u dotazu mám, tu jsem nenapsal jelikož je zbytečná...všechno funguje, všechno z databáze se zobrazí bohužel obrázek se zobrazí jako text a nechci přenášet proměnný přes URL. Mě jde o to že jsem i koukal na stránky s použitím BLOB a mám všechno tak jak má být, ale stejně se nezobrazuje a já nevím v čem je problém.
echovat kod obrazku primo do HTML kodu je pitomost, v tom je problem

obrazek muzes vkladat akorat pres tag img (preci jenom, k cemu jinymu img pouzit, ze)


bez <img src="obrazek.php?id=neco"> se proste neobejdes (aspon ne s HTML strankou)
Asi se budu opakovat, ale:
ukládat obrázky do DB je prostě BLBOST! Nevím, kdo ti to poradil, ale tady máš co jsi chtěl. Jsou s tím jenom problémy ...
... proč? Proč ukládáš obrázky do DB? Aby ti je někdo nepovolaný nezobrazil? To jde udělat i pomocí PHP a mnohem líp.

"nechci přenášet proměnný přes URL." tak je přenášej přes $_POST, $_SESSION, $_COOKIES a co já vim co ještě ...
medion (rhea.wz.cz)
jsem se snazil to vysvetlit, jak nejlepe jsem umel...

A
- mam soubor.php
- header je nastavena na PHP
- tys zmenil header na obrazek header('Content-Type: image/jpeg');
tim padem soubor.php se zobrazi jako soubor.php.jpeg, kapito?
- ale protoze jsi tam pridal echo "<table>", tak PHP provedlo automatickou konverzi na header('Content-Type: text/html') nebo text/plain a tim padem se soubor zobrazi jako soubor.php.txt soubor.php.htm
kapito?
Cili nemichat 2 veci naraz. Obrazkova data a HTML data, viz:
<IMG src="zobraz_obrazek.php?id=5">
viz Mike (specialfx.xf.cz)
<img src="obrazek.php?id=neco">

Jeste jinak. Script, ktery ti z databaze vybere obrazek musi byt v jinem souboru nez script, ktery zobrazuje HTML s tim obrazkem.

B
Muzes ale pouzit vlozeny IFRAME nebo mozna OBJECT
s tim iframe je to myslim stejny problem, ale mozna by to slo nejak osalit, iframe lze nastavit type a lze do nej data vepsat javascriptem, takze to mozna jde primo.

C
obrazky bych do databaze neukladal, pokud nemas v databazi spoustu mista. Na wz.cz mas k dispozici 5M. Pri dobre vuli na na 30-100 obrazku.
Dale ma wz.cz myslim omezeny pocet SQL dotazu. pri dobre vuli na zobrazovani stranky pouzijes tak 10-20 (kdyz to budes prehanet)
ok, takže do souboru...mno otázka teď zní jak zabezpečit soubor aby kdokoliv nezadal www.stranka.cz/image a jméno obrázku a nestáhl to
medion: "ok, takže do souboru"
To je aspoň sloveso!

"mno otázka teď zní jak zabezpečit soubor"
Odpověď:
.htaccess: denny from all
potom se ti do složky nikdo "zvenčí" nedostane. Toto je to nejlepší řešení, které může být.
No a pokud by jsi chtěl PHP k downloadu:

Header("Content-Description: File Transfer");
Header("Content-Type: application/force-download");
Header('Content-Disposition: attachment; filename='filename.png');
Header('Content-Length: '.filesize('./tajnaslozka/filename.png));
readfile('./tajnaslozka/filename.png');
<HTML>Adresář s obrázky zablokuj pomocí .htaccess - viz např. http://jary.borec.cz/html/access01.php.</HTML>
Tom:

děkuju

Thalia:

děkuju
ještě mě teda napadá...dá se použít

.htaccess: denny from all

jen pro určitou složku?
<HTML>Samozřejmě. .htaccess platí vždy pro ten adresář, ve kterém je umístěný (+ jeho podadresáře).</HTML>
aha, myslel jsem, že je to jen jeden soubor, nevěděl jsem že je jich možno udělat více...děkuju
medion: jeden adresář, jeden .htaccess, jehož pravidla plat pro aktuální adresář a všechny v něm obsažené soubory a zanořené adresáře.
Pokud by jsi např. tedy chtěl blokovat přístup do /images/, ale do /images/subimages/ už ne, tak do /images/ dáš .htaccess s obsahem "denny from all" a do /images/subimages/ dáš další .htaccess ve kterém bude "allow from all" ... teda doufám že zase nežvanim kraviny a opravdu to funguje ;)