hjkl Posted May 27, 2014 Report Posted May 27, 2014 Kā 100% pārliecināties, ka augšupielādēts fails tiešām ir bilde, piem., jpeg, png, bmp, nevis php fails ar nosaukumu bilde.jpeg? Quote
gurkjis Posted May 27, 2014 Report Posted May 27, 2014 Ar getimagesize(), ja masīva pirmie 2 elementi (platums un augstums) ir lielāki par 0, tātad ir bilde. Quote
jurchiks Posted May 27, 2014 Report Posted May 27, 2014 (edited) http://www.php.net/manual/en/function.getimagesize.php Errors/Exceptions If accessing the filename image is impossible getimagesize() will generate an error of level E_WARNING. On read error, getimagesize() will generate an error of level E_NOTICE. Lai nepiedirstu error logus: @getimagesize($file) Edited May 27, 2014 by jurchiks Quote
hjkl Posted May 28, 2014 Author Report Posted May 28, 2014 Kā ir ar getimagesize()[2] izmantošanu? Vai ir iespējams, piem., php failu tā modificēt, ka šis izdotu kādu no konstantēm IMAGETYPE_JPEG vai tml.? Quote
jurchiks Posted May 28, 2014 Report Posted May 28, 2014 (edited) Kā ir ar getimagesize()[2] izmantošanu? Tikai kopš PHP 5.4: http://php.net/manual/en/language.types.array.php#example-102 ...ka šis izdotu kādu no konstantēm IMAGETYPE_JPEG... Tā konstante ir integer, tas tev nav enums kā Javā, to var aizstāt ar skaitli un nekas nemainīsies. Kods nekad neizdos konstanti, kods izdos integer, kuru tu salīdzināsi ar doto konstanti (kura pati ir skaitlis). Šeit ir vērtības: http://www.php.net/manual/en/function.exif-imagetype.php Edited May 28, 2014 by jurchiks Quote
Kavacky Posted May 28, 2014 Report Posted May 28, 2014 Jā, ir iespējams. http://www.php.net/manual/en/function.getimagesize.phpLai nepiedirstu error logus: @getimagesize($file) To "@" simbolu vajag aizliegt un no PHP cores izravēt uz visiem laikiem. Nevajag šaut sev kājā jau laicīgi, palaist garām arī E_WARNING, jo tas, ka logā nekrājas notices, ir, protams, ļoti svarīgi, jo logu tu katru dienu lasi un tam ir jābūt tīram no paziņojumiem, ka kāds mēģina kko muhļīt tavai lapai ar nepareiziem failiem. Quote
jurchiks Posted May 28, 2014 Report Posted May 28, 2014 Nu bet viņam taču vienkārši vajag pārbaudīt, vai fails ir bilde, un ja nav, tad pofig. Tas warnings neko nemainīs, tikai piedrazos logus. Pārsvarā tas "@" ir slikta lieta, bet šajā gadījumā, IMHO, pilnīgi pieņemami. Quote
Kavacky Posted May 28, 2014 Report Posted May 28, 2014 Šitā: if ($imagedata['mime']) { return IMAGETYPE_JPEG; } A tev kaut kā traucē, ka logos rakstās? Tu viņus pārlasi katru dienu kā kādus dzejoļu krājumus? Ir daudz vienkāršāk vienreiz nenospiest taustiņu, kaut vai slinkuma pēc, jo ir jāspiež un it kā jāpiedomā līdzi, ko tad tas tagad nozīmē, nekā pēc tam ilgi brīnīties. Quote
hjkl Posted May 28, 2014 Author Report Posted May 28, 2014 (edited) Šitā: Ģeniāli. Bet ja nopietni. Kā getimagesize()[2] iegūst to integeru? Failā ir kaut kādi baiti, kas nosaka kāda veida info tur glabājas? To nevar apiet? Pieņemsim arī, ka uz servera php programmas var izpildīt tikai no failiem ar nosaukumu *.php, bet mūs interesē fails ar nosaukumu bilde.jpeg Edited May 28, 2014 by hjkl Quote
jurchiks Posted May 28, 2014 Report Posted May 28, 2014 A tev kaut kā traucē, ka logos rakstās? Priekš kam logot kaut ko, kas ir pilnīgi bezsvarīgs? Tas tikai traucē saredzēt to, kas ir svarīgs. Un jā, error logus vajadzētu lasīt biežāk par reizi mēnesī. @hjkl - http://www.php.net/manual/en/function.exif-imagetype.php#113253 Quote
daGrevis Posted May 28, 2014 Report Posted May 28, 2014 Es nezinu vai PHP pasaule ir tādā līmenī, bet tagad visi izmanto Sentry. Check it out! Quote
rpr Posted May 28, 2014 Report Posted May 28, 2014 Es nezinu vai PHP pasaule ir tādā līmenī, bet tagad visi izmanto Sentry. Check it out! domāji šo? https://www.getsentry.com/pricing/ Quote
Kavacky Posted May 28, 2014 Report Posted May 28, 2014 Tas, ka useri bilžu vietā aktīvi cenšas uploadot nebildes, ir galīgi nebūtisks fakts? Quote
daGrevis Posted May 28, 2014 Report Posted May 28, 2014 > domāji šo? https://www.getsentry.com/pricing/ Yes, sir. Sentry ir pašhostējams par brīvu, though. Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.