Poradi nekdo jak vytvorit download souboru, resp. obrazku tak, aby nebyla odhalena cesta ke zdroji?
Mam v urc. adresari obrazky a kdyz poukazuji na obrazek nejakym linkem, tak je lehke zmenou linku se dostat k dalsim, jak vyresit tento problem?
Obrazky nechci v zadnem pripade ukladat do databaze. Jde to nejak vyresit pomoci fce Link(); nebo SymLink();
Diky za rady
vloz do toho adresare prazdny soubor <index.html> a uz se ti tam nikdo brouzdat nebude
No tohle neni zrovna to pravy orechovy. Bohuzel obrazky jsou cislovany od do tzn, staci jen menit link a na to ti nejaky index.html nepomuze...
Co zkusit .htaccess? Viz např. seriál na http://jary.borec.cz/html/access01.php.
Nejsem si jist, zda bych tim neco vyresil. Me spise zajima, zda jde nejak vytvorit neco jako symbolicky odkaz na jedno pouziti odkazujici na existujici soubor, hlavne jak jej zapsat a pouzit.
muzes si do db vygenerovat
kjlskjdlfksjdlfk.jpg -> muj_obrazek1.jpg
a skritpu obr.jpg predhodit kalsjdflksjdf.jpg a on ti vrati obsah souboru muj_obrazek1.jpg...
Moc nechapu pointu tohoto reseni. Myslis jako vygenerovat do dtb nove nazvy, ktere budou odkazovat na platne? Nebo ulozit i obr. do dtb, to jsem psal ze nechci.
Uved zkraceny priklad, ale dle me to je blbost.
strucne receno: http://mirrors.inway.cz/manual/cs/ref.image.php
Btw. hardlinkem bys toho teda vyresil... jo a este neco -> link a symlink jsou na wz zakazany http://mt.wz.cz/info.php
Ted nevim zda to bylo mysleno ironicky nebo jak? Me jde o radu a ne o konstatovani, navic tohle nechci aplikovat na wz!
mno... jak to bylo mysleno... kdyz vytvoris hardlink u souboru, uz nepoznas, ktery z nich je original a ktery je tim hardlinkem. Tudiz dva ruzne zaznamy odkazujici na stejna data. to je mne paradox. Cim si pomuzes?
no a koukam, ze odkaz na manual ke GD2 uspesne ignorujes...
A co takhle prubnout treba nejakej bitovej posun? Prez to se ti vetsina lameru nedostane a ti co prece jen neco malo vi, budou lini se s tim nejak dyl zaobirat. Pokud ty obrazky tam nahravas dynamicky prez nejaky skripty, tak to rovnou muzes prevechslovat a potom musis mit zase nejakou proceduru, ktera ti to hodi a nazpatek vrati ti to jako normalni obrazek. Jo a ty procedury by asi mely byt v nejake slozce, kde bude pomoci htaccess zamezen pro uzivatele pristup.
no... ja si myslim, ze kdyz pomoci GD2 udelas skript, ktery z GET parametru nejak vycte zdrojovej obrazek a posle ho do prohlizece jako image/jpeg, a kdyz v .htaccess das do adresare s obrazky deny form all, tak je to presne to, co hledas. Muzes si treba vytvorit tabulku v db, kde budes mit dva sloupce: a, b - v 'a' je orig.jmeno souboru, v 'b' treba md5 hash toho jmena...
image.php
<?php
if (!isset($_GET['file'])) die("Nebyl zadan parametr.");
// ... db connect atd.
$res = mysql_query("SELECT a FROM tabulka WHERE b='$_GET[file]' LIMIT 1");
$filename = mysql_result($res,0,0);
$img_temp = imagecreatefromjpeg($filename);
$orig_w = imagesx($img_temp); $orig_h = imagesy($img_temp);
$img=imagecreatetruecolor($orig_w,$orig_h);
imagecopyresampled($img,$img_temp,0,0,0,0,$orig_w,$orig_h,$orig_w,$orig_h);
header ("Content-type: image/jpeg");
imagejpeg($img,"",100);
imagedestroy ($img);
?>
a volas: <img src='image.php?file=8c7dd922ad47494fc02c388e12c00eac'>
Tohle uz nejak vypada, urcite by to slo, ale ted mala poznamka. Nebude tohle desne zatezovat server? Urcite ne kdyz bud obr. par a navstevnost mala, ale kdyz bude navstevnost cca 5000 lidi coz by nebyl problem.
Navic tohle by se dalo aplikovat na obrazky, ale co treba jine soubor?
Jedna se sice predevsim o obrazky, ale mam tam i jine treba zvuky do mobilu ve formatech AMR, MMF atd..
Stale me totiz zajima zda by to neslo nejakym tim symbolickym odkazem ktery bude odkazovat na platny soubor.
zatížení to je, ale vzhledem k tomu, že to používá třeba THG, tak to asi půjde...
napadlo me presmerovani jako header("Location: soubor.ext"); ale to by asi moc nepomohlo-adresu to nakonec neschova (ale dejme tomu, ze je to takove polovicni reseni aspon pro odkazy...). A co .htaccess a mod_rewrite?
http://faq.webzdarma.cz/otazka.php?56
http://www.google.com/search?q=mod_rewrite
header(); jsem zkousel jako prvni, ale ukaze to ve finale cestu. mod_rewrite by jiste sel, ale bohuzel s tim moc zkusenosti nemam, budu muset dostudovat.
Napadla me jeste jedna vec ale spis myslim ze to je blbost, bo nevim co by to v reale udelalo.
A to ze kdyz by dal nekdo pozadavek na stazeni urciteho souboru, tak by se tento zkopiroval ze nepristupneho adresare do volne pristupneho a tam ho stahnul, po stazeni se odstranil.
Ted otazka zda to neni prasacke reseni a pokud ne, tak jak poznam, ze doslo k uplnemu stazeni, tj. ze uzivatel soubor jiz prijal.
no to nevim, jak to poznas, ale rekl bych, ze s php s tim moc nezmuzes.
a co podobnej zpusob, jako s tema obrazkama, ze podle naky databaze nebo proste nejakyho systemu nactes obsah ciloveho souboru ve skriptu, posles hlavicku s mime a dalsi, a pak posles obsah toho souboru... je to jenom takovej napad, sam nevim, jestli by tohle fungovalo:
<?php
// predava se parametr $_GET['file']
$jmeno_souboru = fce_ktera_z_parametru_rozkoduje_jmeno_souboru($_GET['file']);
$header("...");
$header("...");
...
$read = fopen($jmeno_souboru,"r");
$data = fread($read,filesize($jmeno_souboru));
$write = fopen("php://stdout","w"); // tohle jsem ale nikdy nepouzival, tak nevim
fwrite($write, $data);
fclose($read);
fclose($write);
?>
Tohle jsem vcera testoval a vypada, ze by to mohlo po nejake uprave makat. Nechapu jen proc kdyz provedu binarni cteni ze souboru, tak proc ho zapisovat do jineho, k tomu snad lze uspesne pouzit i Copy(); nebo ne?
Navic me ani tak nejde o to soubor dostat jinam ale primo na vystup, kde by byl ke stazeni.
Kdyz jsem vynechal
$write = fopen("php://stdout","w"); // tohle jsem ale nikdy nepouzival, tak nevim
fwrite($write, $data);
fclose($write);
a pouzil napr u wav
header ("Content-type: audio/wav");
tak jsem sice vysledek dostal na vystup primo ke stazeni, ale jmeno vysledneho souboru byl nazev skriptu ve kterem se to zpracovavalo, tj. script.php. Po stazeni takoveho souboru a prejmenovani na *.wav byl plne funkcni, takze jeste nejak dostat na vystup spravnou koncovku souboru s cimz si nevim rady.
Přidej další řádky header a můžeš si nastavit přesný název souboru pro uložení.
header("Content-Transfer-Encoding: binary");
header("Content-Disposition: inline; filename=".$nazevsouboru);
Diky.. presne to jsem potreboval...