Autor | Zpráva | ||
---|---|---|---|
nightrider Profil |
#1 · Zasláno: 13. 2. 2009, 01:43:59 · Upravil/a: nightrider
Dělám si fotoalbum a když jsem si dělal stáhnutí složky s fotkama, tak jsem zjistil že by si každej mohl stáhnout vše co mám na stránce :-) Ví někdo kde je chyba? Děkuju
$dir="./".urldecode($_GET["dir"])."/"; $zip = new zipfile(); $adr=Dir($dir); while ($file=$adr->Read()){ if (!(($file==".")||($file=="..")||($file=="index.php")||($file=="info.txt"))){ if (!StrStr($file,"thumb.jpg")) $files[]="$file"; } } $adr->Close(); @Sort($files); $max=SizeOf($files); $file_info=""; for ($i=0;$i<$max;$i++){ $filename=$dir . $files[$i]; if (@is_dir($filename)){ } else { $f=@FOpen($filename,"rb"); $add_to_zip = @fread ($f, filesize ($filename)); //echo "Zip<br>$filename (".filesize($filename).")<br>$add_to_zip<hr>"; @FClose($f); $file_info.="$filename - " . Round((FileSize($filename)/1024),2) . " kB\r\n"; $zip->addFile($add_to_zip, "$files[$i]"); } } $info.=$file_info . "\r\n\r\n------------------------------\r\n"; $info.="Stazeno\r\n"; $zip->addFile($info, "info.txt"); $zip_name="fotky.zip"; header("Content-Type: application/x-zip"); header("Content-disposition: attachment; filename=$zip_name"); echo $zip->file(); |
||
jogurt Profil |
#2 · Zasláno: 13. 2. 2009, 01:56:33
Chyba bude asi primo v principu, kdyz tam mas jako vstup cestu, kterou to ma stahnout. Ta pak muze byt treba "../../" a zabali se a odevzda vsechno od -2 urovne.
Reseni bude nejak osetrit ten vstupni parametr. Nejlepe asi porovnavat ho s nejakym indexem povolenych polozek. |
||
nightrider Profil |
#3 · Zasláno: 13. 2. 2009, 02:22:41
Nevíte jak přesně? Já to dělám prvně a jsem stoho pafff :-(
|
||
jogurt Profil |
#4 · Zasláno: 13. 2. 2009, 02:32:44
V tom prvnim radku se definuje promenna $dir. Ta potom predstavuje adresu toho adresare, ktery se ma zabalit.
Ta promenna se slozi z ./ a $_GET[dir] a / V $_GET[dir] je hodnota, ktera se pise v GET parametru (v adrese), napriklad: index.php?dir=fotky. Pokud potrebujete ten skript jenom jednoucelove, chcete nechat stahnout jenom adresar fotky, pak bude nejjednodussi nahradit ten prvni radek: $dir="./fotky/"; |
||
nightrider Profil |
#5 · Zasláno: 13. 2. 2009, 03:01:16 · Upravil/a: nightrider
Právě že to má bejt na všechny alba :-( tahám to s db a v databázi mám cestu a jméno souboru
je tam složka fotoalbum ve který mám další složky a právě i ten kódík na stahování. Vím že to je prasárna,ale jinak jsem to nesvedl: dotaz vypadá nějak takhle: where id_alba=parent tím si zavolám cestu k souboru a jméno potom to samé dělám i na stahování :-( |
||
jogurt Profil |
#6 · Zasláno: 13. 2. 2009, 03:23:22
Kdyz teda mate v DB ty adresare, tak udelejte dotaz, ktery Vam je vybere:
$dotaz=mysql_query("SELECT id_alba FROM tabulka GROUP BY id_alba"); //ten GROUP BY pokud ovsem mate vse v jedne tabulce while($album=mysql_fetch_array($dotaz)){ //probira vysledky dotazu if($dir=="./".$album["id_alba"]."/"){ //kdyz najde pozadovany adresar mezi ID alb, zastavi probirani... $je_to_album=true; break; } } if(!$je_to_album) die("CHYBA - Nekorektni ID alba."); Tenhle kod zkuste dat mezi prvni a druhy radek Vaseho skriptu. |
||
nightrider Profil |
#7 · Zasláno: 13. 2. 2009, 03:32:45
To vyhazuje chybu :-(
Warning: mysql_query() [function.mysql-query]: Access denied for user 'www-data'@'localhost' (using password: NO) in /home/free/root/www/fotoalbum/download.php on line 5 Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/free/root/www/fotoalbum/download.php on line 5 Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/free/t/ on line 6 CHYBA - Nekorektni ID alba. |
||
nightrider Profil |
#8 · Zasláno: 13. 2. 2009, 03:33:42 · Upravil/a: nightrider
...
|
||
jogurt Profil |
#9 · Zasláno: 13. 2. 2009, 04:11:46 · Upravil/a: jogurt
Aha, nevedel jsem, ze nejste prihlaseny do DB. Pred pristupem do DB se musite pripojit a vybrat databazi:
mysql_connect(host,prihlasovaci_jmeno,heslo); mysql_select_db(nejaka_db); |
||
nightrider Profil |
#10 · Zasláno: 13. 2. 2009, 11:11:40
no jo, já tam neměl includ na připojení :-) jsem byl nějak už unavenej,ale ted to díky Vám maká jak má a bez možnosti obcházení :-) Děkuju Vám moc za radu i čas.
|
||
Časová prodleva: 15 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0