2015-10-05 74 views
0

我有一個處理上傳文件的HTML表單。

我使用PHP變量$_FILESname, type, error, size, tmp_name)將值存儲在我的數據庫中,並驗證上傳的文件。

我通過檢查MIME類型,而不是什麼,做大多數驗證。然而,在檢查文檔大小後,經過研究,我聽說用戶可以輕鬆修改$_FILES["size"]的內容,並在其中創造假價值。

這是我網站的問題,因爲我打算限制某些用戶使用20MB upload和更高等級的成員上傳最多100MB,等等......所以當然,如果一個普通用戶欺騙代碼說大小低於20mb,而文件實際上可能超過20MB。

所以問題是,我如何解決這個sittuation和正確檢查文件大小?

請注意,由於上傳的文件不是圖像,因此我無法使用getimagesize()

+0

的文檔? – PauloASilva

+0

我正在使用IIS。 –

+0

我很抱歉,我無法幫助您使用IIS,但我確信您可以通過某種方式來限制最大上傳大小或客戶端最大主體大小,與nginx + PHP-FPM或Apache一樣。 'maxAllowedContentLength'(「指定IIS支持的請求中的最大內容長度」)。 [如何更改默認值](http://forums.iis.net/post/1543458.aspx) – PauloASilva

回答

0

這是正常的

每個人都可以更改請求頭

,用戶也可以改變$_FILES[*]['type'],所以你必須要小心它

你必須使用filesize() PHP函數http://php.net/manual/en/function.filesize.php

<?php 

echo filesize($_FILES['myFile']['tmp_name']); 

?> 

希望對你有所幫助

+0

感謝您的回答。 –

0

嘗試使用文件大小函數Php, 例如

<?php 
$filename = $_FILES['File']['tmp_name']; 
echo $filename . ': ' . filesize($filename) . ' bytes'; 
?> 

閱讀您使用的網絡服務器,其在php manual filesize