Jackal Posted May 10, 2006 Report Share Posted May 10, 2006 Nu man ir shitāds sktipts, tikai ir viena problēma ar šito skriptu var uploadot jebkuru failu. Kā ierobežot uploadošanu, lai var uploadot tikai bildes? <?php if($_SERVER['REQUEST_METHOD'] =='POST'){ foreach ($_FILES["pictures"]["error"] as $key => $error) { if ($error == UPLOAD_ERR_OK) { $tmp_name = $_FILES["pictures"]["tmp_name"][$key]; $name = $_FILES["pictures"]["name"][$key]; move_uploaded_file($tmp_name, "C:\Web Page\EasyPHP1-8\www\upload/$name"); echo "File"; echo " "; echo $name; echo " "; echo "have been uploaded successfully"; } } } ?> Link to comment Share on other sites More sharing options...
Kavacky Posted May 10, 2006 Report Share Posted May 10, 2006 mime_content_type( fails ) Link to comment Share on other sites More sharing options...
Kristabs Posted May 10, 2006 Report Share Posted May 10, 2006 Maza piebilde: echo "File ".$name." have been uploaded successfully"; Mazliet eertaak buus. Link to comment Share on other sites More sharing options...
eglitis Posted May 10, 2006 Report Share Posted May 10, 2006 Vai tad nepietiek ar getimagesize()? mime_content_type() izmantošanai jākompilē klāt mime-magic, bet getimagesize() ir pieejams pēc noklusējuma. Link to comment Share on other sites More sharing options...
marz Posted May 11, 2006 Report Share Posted May 11, 2006 vari parbaudit vai aploudojamā faila nosaukuma beigu simboli sakrīt ar .jpg vai .jpeg Link to comment Share on other sites More sharing options...
bubu Posted May 11, 2006 Report Share Posted May 11, 2006 Un kā tas nodrošinās, ka fails ir bilde? Link to comment Share on other sites More sharing options...
hmnc Posted May 11, 2006 Report Share Posted May 11, 2006 bubu - a kā tu uz servera varēsi izsaukt skriptu, kura beigās būs .jpg ? :) Link to comment Share on other sites More sharing options...
Delfins Posted May 11, 2006 Report Share Posted May 11, 2006 (edited) hmnc, ... tāpat kā citus failus, kuriem ir +X tiesības... ;) PS: pat tādu failu - mana.super-proga.jpg.doc.pdf Edited May 11, 2006 by Delfins Link to comment Share on other sites More sharing options...
hmnc Posted May 11, 2006 Report Share Posted May 11, 2006 Delfins - tas tikai gadījumā, ja tev ir ssh/telnet uz kastes... respektīvi ja caur web uploadē kkādu mēslaini, tad izsaucot tāpat apacis (vai kāds cits servs) pārbauda ekstensiju un atbilstoši tai arī rīkojas. so uztraukumam nav pamata. elementārākais veids ir pārbaudīt pēdējos četrus simbolus na naļičijie ".jpg" ( vai kā cita, piemēram .png) un vsjo. neaizmirstam arī par pathinfo() funkciju, kura neprasa nekādus papildus mime moduļus. un arī neaizmirstam par to, ka uploadējot failu tiek noteikts tā mimetype (ja nemaldos tad vienreiz bija diskusija par to no kurienes tas mimetype uzrodas). bet nu kā cilvēki runā tad visātrākais esot $extension = substr(strrchr($filename, "."), 1); Link to comment Share on other sites More sharing options...
eglitis Posted May 12, 2006 Report Share Posted May 12, 2006 hmnc, gan extension gan pārlūka padotais filetype ir garām. Pamatošu. Pārlūks var padot jebko (arī ļaunais lietotājs). Viens pārlūks pados image/jpeg, cits image/pjpeg (ja pareizi atceros netscape mime tipu jpg bildēm), cits vēl kautko un lietotājs arī doc failam pados image/jpeg telnetā. Un ko tālāk? Kā GD bibliotēka apstrādās tādu failu? Nekā. Tādēļ nevajag radīt problēmas kur to nav - jālieto funkcijas darbam ar konkrētu failu nevis nedrošiem tā atribūtiem. Varbūt mazliet uzvilkos, bet tieši ar failu tipu pārbaudi esmu redzējis visādus "brīnumus", kuri neiet krastā, jo kādā gadījumā nefunkcionē pareizi. Link to comment Share on other sites More sharing options...
Delfins Posted May 12, 2006 Report Share Posted May 12, 2006 hmnc, un ja ir execute($uploaded_file); ? Pilnīgi pietiek ar getimagesize() Link to comment Share on other sites More sharing options...
hmnc Posted May 12, 2006 Report Share Posted May 12, 2006 eglits - nedaudz paranoiski tu izklausies. paroles tu noteikti arī checksummo 5 reizes :) pievienojos Delfins - nedabūn x/y izmērus, značit nav bilde. a kur tad skriptā būs execute('bilde.jpg'); ? :DD Link to comment Share on other sites More sharing options...
eglitis Posted May 12, 2006 Report Share Posted May 12, 2006 hmnc, nē, tikai 1 reizi, bet obligāti klāt lieku salt'u (sāli?). Vispār (laikam) šis ir iesācēju forums un nevajag mācīt nepareizas metodes. Tas nekas, ka "var arī tā"... Jo iesācēji mēdz interpretēt padomus visneiedomakajos veidos un rezultātā var neatpazīt paplašinājumu "jpeg", neatpazīt image/pjpeg un beigās vēl pārbaudīt tikai "jpg" esamību faila nosaukumā un kopēt uz no ārpuses pieejamu mapi "fakejpg.php" tipa failus. Link to comment Share on other sites More sharing options...
hmnc Posted May 12, 2006 Report Share Posted May 12, 2006 un kā piemēram tu noteiksi vai jpega kodēta cmyk vai rgb formātā? firefox starpcitu korekti nespēj attēlot cmyk jpegas... Link to comment Share on other sites More sharing options...
eglitis Posted May 15, 2006 Report Share Posted May 15, 2006 To es noteikšu ar to pašu getimagesize() funkciju. With JPG images, two extra indexes are returned: channels and bits. channels will be 3 for RGB pictures and 4 for CMYK pictures. bits is the number of bits for each color. Link to comment Share on other sites More sharing options...
Recommended Posts