私のサイトにはアップロード機能があり、PDFのアップロードのみが許可されています。アップロードされたファイルがPDFのみであることを確認する方法よりも、画像ファイルをチェックするgetimagesize()
と同じです。ファイルがpdfであることを確認する方法はありますか?私のコードを以下に示します。
$whitelist = array(".pdf");
foreach ($whitelist as $item) {
if (preg_match("/$item\$/i", $_FILES['uploadfile']['name'])) {
}
else {
redirect_to("index.php");
}
}
$uploaddir='uploads/';
$uploadfile = mysql_prep($uploaddir . basename($_FILES['uploadfile']['name']));
if (move_uploaded_file($_FILES['uploadfile']['tmp_name'], $uploadfile)) {
echo "succussfully uploaded";
}
このredirect_to
およびmysql_prep
は私が定義した関数です。しかし、MIMEタイプはヘッダーを使用して変更できます。そのため、ファイルが元のPDFであることを確認する方法はありますか?
PHPの File Info Functions を使用して、ファイルのMIMEタイプを確認できます。タイプ「application/pdf」で返される場合は、PDFである必要があります。
ファイル情報関数はPHP 5.3で追加されましたが、それより前は mime_content_type 関数を使用できます。
mime_content_type('file.ext');