アップロードされたファイルのmimeタイプを確認する必要があります。
strcmp(substr(mime_content_type($_FILES['userfile']['tmp_name']),0,4),"doc"
mimeタイプをチェックするためのphp.netの完全な例:http://php.net/manual/en/function.mime-content-type.php
ファイル名の名前と長さのフィルターが追加された完全なコード(これはファイル名に基づいています):
$match = preg_match_all("/^[a-zA-Z0-9]/$", $_FILES['userfile']['name'], $matchif);
if (!$matchif)
{
die('not allowed filename');
}
if (strlen($_FILES['userfile']['name']) > 255 || strlen($_FILES['userfile']['name'] == 0))
{
die('Filename length not allowed');
}
if (strcmp(substr(mime_content_type($_FILES['userfile']['name']),0,4),"doc")==0)
{
if (move_uploaded_file($_FILES['userfile']['tmp_name']))
{
// upload file
}
else die('not upload');
}
else die('support only doc');
例として、条件をダンプして使用し、mimetypeをチェックできます。
var_dump($_FILES['userfile']['type']);
if ($_FILES['userfile']['type'] == 'application/msword') { ... move uploaded files ... }
注意:mimeタイプは偽造される可能性があるため、ファイル名、$ _ FILES、ファイル名の長さを介してタイプを確認し、コードの最初の行を読み取ってDOCまたはその他のものかどうかを確認します。メモ帳でドキュメントを開き、ファイルを読んでPHPで何を確認できるかを確認します。