download souboru v zabezpečené oblasti
41 příspěvků · strana 1 z 2
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
Ahoj, mohl by mi , prosim, někdo poradit ? V zabezpečné oblasti (přihlášení + sessions) bych rád dal uživatelům k dispozici ke stáhnutí obecně nějaký soubor a rád bych, aby se k němu někdo nemohl dostat např. i tím, že si uloží URL do clipboardu. Má s tím někdo zkušenosti ? Víte, jak ho (soubor) šikovně "schovat" ? Díky. H.
-
Měj php soubor a v něm skript, ve které funkcí header() pošli správnou hlavičku souboru a funkcí readfile() soubor podstrč. Kýžený dokument pak stačí schovat třeba do nesmyslně pojmenovaného adresáře.
-
Tak to jsem teda ještě nezkoušel Neměl bys někde náhodou nějaký ukázkový skript ? :-) ...ale nechci tě otravovat :-) I tak díky.
-
>>Kýžený dokument pak stačí schovat třeba do nesmyslně pojmenovaného adresáře. alebo adresar downloads a potom .htaccess: order allow,deny deny from all to by mohol niekto registrovany niekomu povedat url a bol by tam, takto sa tam dostane len PHP a FTP ;)
-
Asi tak. Jen mi přijde lepší než adresář pojmenovávat nesmyslně, tak mu dát normální jméno a umístit do něj soubor .htaccess s následujcím obsahem: Order Deny,Allow Deny from all Apache pak nikoho dovnitř nepustí. Dále je problém se "správnou hlavičkou". Zaprvé se musí dát dobrá Content-Type, navíc se mi osvědčilo ještě jednu: Content-Disposition: attachment; filename=jmeno.dat
-
Sakra, byl jsem pomalej. Ale ta druhá část platí.
-
"to by mohol niekto registrovany niekomu povedat url" on nebude znát url, když mu to podstrčíš do toho souoru download.php Honza: já to ještě nezkoušel teda, ale mělo by to vypadat nějak takhle: if($radne_prihlaseny) { Header('Content-Type: MIME typ souboru(to si zjisti)'); readfile('download/soubor.xxx'); } možná to nepůjde, nezkoušeno
-
Nevadí, díky :-)
-
Mohl bys mi, prosim te, priblizit, jak bych to mohl udelat s tim .htaccess a pristupem do adresare ? A s PHP, aby se do adresare dostal jen prihlasenej uzivatel ? Diky moc. Honza
-
adresar so suborom download.php, logoff.php a login.php login.php ----------------- if ($user) { //tu nejako skontroluj ci je registrovany (DB, subor, ...) session_start(); $_SESSINO["logedin"] = 1; }else{ //formular na prihlasenie logoff.php --------------- $_SESSION["logedin"] = 0; session_destroy(); download.php ------------------- if ($_SESSION["logedin"]){ if (file_exist("download/" . $file)){ Header("Content-Type: application/ocet-stream"); readfile("'download/" . $file); } } potom mas podadresar download kde su subory (1.txt, 2.exe, blabla.nieco ...) a .htaccess obsah .htaccess order allow,deny deny from all a potom volaj download.php v odkazoch ako download.php?file=blabla.nieco a stiahne sa ti subor blabla.ieco z adresara download
-
Diky moc, Lacope ! Honza
-
V IE to bohuzel nechodi (predtim jsem to zkousel ve FF). V IE to pise, ze nemuze stahnout soubor a vypise to celou tu URL adresu : ...&file=file. Netusim, kde je chyba. Honza
-
Krom toho, ze to v IE nechodi, viz predch. prispevek, ve FireFoxu to sice jde, chce to stahnout, ale stahne ho jen malou cast z 300 KB ho oseka jen na 7 KB -> chyba v komprimovanem souboru. Zkousel jsem tvou variantu s ruznymi obmenami, ale stale nic. Netusis, kde by mohla bejt chyba ? Diky H.
-
Můžete mi s tím, prosím, někdo pomcot ? Viz dva předchozí příspěvky, bohužel to nefunguje, tak jak mi laskavě poradil Lacop .. :-( Zkoušel jsem více možností, výsledek by se dal popsat výše zmíněnými dvěma příspěvky ode mne. Díky Honza
-
tak potom (chvilu som googloval ;)) download.php ------------------- if ($_SESSION["logedin"]){ if (file_exist("download/" . $file)){ header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); header("Content-Disposition: attachment; filename=".basename($file).";"); header("Content-Transfer-Encoding: binary"); header("Content-Length: ".filesize($file)); readfile("$file"); exit(); } } toto musi ist }
-
inak http://www.onaje.com/php/article.php4/40
-
Uz je to lepsi, ale bohuzel: STALE
-
Uz je to lepsi, ale bohuzel: STALE SE STAHUJE JEN CAST TOHO SOUBORU. TEN SOUBOR MA NA FTP V ADR.DOWNLOAD VELIKOST ASI 800 KB, ALE STAHNE SE POUZE SI 6 KB. VUBEC NEVIM CIM TO JE ... NEDA SE TAM NEJAK OSETRIT VELIKOST SOUBORU ? ALE DEKUJU :-)
-
A prečetl sis ten soubor? Já bych tipnul, že místo správného obsahu tam bude nějaká chybová hláška PHP.
-
Ano, precetl, chybovou hlášku to nepíše žádnou, pouze stáhne soubor, který má asi 10-násobně menší velikost ... tak já nevím ... H.
-
A nešlo by ten stažený zkrácený soubor vidět?
-
Jak videt ? Chceš ho poslat ? Je to zipac, kterej ma normalne 800 KB, ale stazenej pouze 7, takze to pri otevreni nahlasi chyba v komprimovanem souboru, nebo tak neco ... H.
-
Honza: Pokud ten stažený zipáč obsahuje normální html nebo php kód, tak je něco zhusta blbě v readfile apod. Pokud ten stažený zipáč obsahuje binární data (a to ze začátku souboru), tak je rovněž něco blbě. Moc ale pomůže, pokud uvedeš, o kteý z těchto dvou případů se jedná.
-
Zkousel jsem zazipovat jak nekolik souboru PHP, tak i uplne jinej soubor s priponou .max - coz je soubor z produktu 3ds max; kdyz ten max otevru pres F3, tak je plnej "divnejch" znaku - coz je v poradku -v tom programu (3ds max) ho v pohode otevru - takze hadam ze jde o binarni soubor. U obou zazipovanejch souboru tu velikost zkrati a nejdou otevrit. H
-
Zde je cast zdrojoveho kodu: ( je soucasti PHP skriptu - jde o uzivatelskou oblast s loginem a SESSIONS ): <? ... if ( IsSet( $stahnout )): if ($stahnout == "navod"): header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); header("Content-Disposition: attachment; filename=".basename($getZipFile).";"); header("Content-Transfer-Encoding: binary"); header("Content-Length: ".filesize($getZipFile)); readfile("$getZipFile"); exit(); endif; endif; ... ?>