[ Ivan Golubović @ 24.01.2012. 18:42 ] @
Pokušavam da uradim upload na server, ali naravno sa proverom šta se upload-uje i hoću da namestim da su dozvoljeni formati doc, docx, xls, xlsx kao i pdf.
Kod PDF-a imam problem što kada radim proveru on se predstavlja kao "application/binary" a ne kao "application/pdf"...
E sad, kako rešiti problem, a ne narušiti bezbednost servera?
[ Nikola Poša @ 24.01.2012. 20:47 ] @
A na osnovu čega si zaključio da je taj neki PDF fajl "application/binary"? Ono "type" polje koje ti stigne u $_FILES nizu nikako ne treba uzimati kao nešto što je relevantno (čak naprotiv iz bezbednosnih razloga), već je najsigurnije do tipa fajla doći uz pomoć Fileinfo ekstenzije. A ako to nije moguće, iz razloga što npr. nemaš tu ekstenziju na serveru, onda bar mime_content_type dolazi u obzir, mada ćeš videti da u manual-u piše da je ona deprecated i da se kao alternativa preporučuje upravo Fileinfo ekstenzija.
[ Ivan Golubović @ 25.01.2012. 01:09 ] @
Pokušavam da namestim fileinfo, ali mi ne ide...
Code:
$finfo = finfo_open(FILEINFO_MIME_TYPE);
    echo finfo_file($finfo, $fajl['tmp_name']);
    finfo_close($finfo);
sada mi radi PDF, DOC i XLS, ali mi ne rade novi Office dokumenti (XLSX i DOCX) za koje mi vraća application/zip.
Inače verzija php-a na serveru je 5.3.2 i fileinfo ekstenzije 1.0.5-dev.

Za nove Office dokumente trebalo bi da vrati:
.docx -=:> "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
.xlsx -=:> "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"

što npr. radi u slučaju $fajl['type']...
[ Nikola Poša @ 25.01.2012. 17:42 ] @
A na kom OS-u to isprobavaš? Šta imaš u $_ENV['MAGIC']?

Da bi fileinfo radio kako treba, taj magic db fajl mora biti postavljen, jer u stvari u njemu je suština. Ako putanju do tog fajla ne proslediš ručno, kao drugi parametar finfo_open, ta funkcija će pokušati sama da ga pronađe, mada pitanje je da li će ga zaista i naći. Uključi prikazivanje warning-a, kako bi eventualno video da li PHP možda izbacuje neko upozorenje da nije uspeo da load-uje magic fajl, pri pozivu finfo_open f-je.
[ Ivan Golubović @ 26.01.2012. 21:44 ] @
Proveriću šta se dešava... Testing server je Windows Server 2008 / Apache / PHP, a production će da bude CentOS sa novijom verzijom PHP-a...
[ Goran Rakić @ 27.01.2012. 21:53 ] @
Kako novi Office formati u suštini jesu ZIP arhive (promeni ekstenziju pa zaviri unutra), verovatno je problem u zastareloj verziji baze za upoređivanje.