jak zakázat přímý přístup k souborům(obrázkům)?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
vk83
Člen | 22
+
0
-

Ahoj,
předem se omlouvám, protože nevím jestli se tento dotaz týká přímo nette, ale možná tak nějak php nebo nějakého jiného nastavení webu.

Jde mi o toto:
Na webu mám nějaké obrázky, které se budou zobrazovat pouze registrovaným a přihlášeným uživatelům. Nemám problém s tím takovou stránku si vytvořit.

Ale rád bych se zeptal, zda je možné, když uživatel přímo do prohlížeče zadá nějakou url adresu toho obrázku (např: http://mujweb.cz/obrazky/obrazek1.jpg), tak aby mu nezobrazil.
Je možné to nějak udělat?

Díky

Editoval vk83 (7. 9. 2012 18:35)

Andrasin
Člen | 29
+
0
-

Mělo by stačit mít obrázky ve složce, do které pomocí .htaccess zakážeš přístup a obrázky budeš zobrazovat ze složky php skriptem třeba takhle

$image = Image::fromFile('obrazek.jpg');
$image->send();
vk83
Člen | 22
+
0
-

Díky, dnes jsem to zkusil, ale mám problém na začátku už i s vytvářením toho obrázku.

Ve firefoxu mi to vypíše: Obrázek „http://localhost/pokus/web/www/fotky/fotkaId=1“ nelze zobrazit, protože obsahuje chyby.
A když se podívám přes firebug, do zdrojového kódu, tak tam je v body pouze:
<img src=„http://localhost/pokus/web/www/fotky/fotkaId=1“ alt=„…“ />

Nebude problem v tom, že je v tom „src“ taková url? Ona je to URL adresa stránky, na které jsem a na které se má ten obrázek zobrazit.

Ale přitom $image = \Nette\Image::fromFile($file);
ve $file je url přímo k JPG souboru.

Věděl by někdo, v čem může být ještě problem? Díky.

vvoody
Člen | 910
+
0
-

Vo $file mas mat path, nie url.

vk83
Člen | 22
+
0
-

Díky, ale stejně mi to nepomohlo.

Já jsem tam měl „http://localhost/…/obrazek.jpg“ a funkce „file_exists($file)“ mi vracela true. Ale i když tam dám přímo cestu na disku, tak to stejně nejde. Ten výsledek je stejný.

Tomáš Jablonický
Člen | 115
+
0
-

Budeš si muset napsat script, který obrázky bude ze složky načítat. Bacha! Takovej script nebude nikdy rychlejší než samotné načítání obrázku klasickým způsobem – to se dá částečně ošetřit cachem ale i tak to bude znatelně pomalejší.

vk83
Člen | 22
+
0
-

Už se mi to zobrazení podařilo vyřešit. Díky.

thunderbuff
Člen | 164
+
0
-

Pokud odkazuješ přímo na obrázek, browser pošle http požadavek a server mu ho vrátí. Pokud obrázek posíláš skriptem, potřebuješ na to další php proces. A v případě, že máš hosting omezující počet php procesů (třeba wedos Nolimit omezuje na 5), tak se ti snadno stane, že přo načítání více obrázků spotřebuješ volné procesy a ostatní návštěvníci čekají.

Editoval thunderbuff (4. 10. 2012 9:43)