PHPでアップロードされたファイルの種類をチェックする方法


  1. MIMEタイプを確認する方法: PHPの$_FILESスーパーグローバル変数を使用して、アップロードされたファイルのMIMEタイプを取得できます。MIMEタイプは、ファイルの種類を示す情報です。以下は、MIMEタイプを確認する例です。

    $fileType = $_FILES['uploadedFile']['type'];
    if ($fileType == 'image/jpeg' || $fileType == 'image/png') {
       // 画像ファイルの処理
    } else if ($fileType == 'application/pdf') {
       // PDFファイルの処理
    } else {
       // サポートされていないファイルタイプの処理
    }

    上記の例では、$_FILES['uploadedFile']['type']を使用してアップロードされたファイルのMIMEタイプを取得し、条件分岐を使用してファイルタイプごとに異なる処理を行っています。

  2. ファイル拡張子を確認する方法: ファイルの拡張子は、ファイルの種類を示す手がかりとなります。以下は、ファイル拡張子を確認する例です。

    $fileName = $_FILES['uploadedFile']['name'];
    $fileExtension = pathinfo($fileName, PATHINFO_EXTENSION);
    if ($fileExtension == 'jpg' || $fileExtension == 'png') {
       // 画像ファイルの処理
    } else if ($fileExtension == 'pdf') {
       // PDFファイルの処理
    } else {
       // サポートされていないファイルタイプの処理
    }

    上記の例では、pathinfo()関数を使用してアップロードされたファイルの拡張子を取得し、条件分岐を使用して異なるファイルタイプに応じた処理を行っています。

  3. MIMEタイプとファイル拡張子の両方を確認する方法: 完全なセキュリティを確保するためには、MIMEタイプとファイル拡張子の両方をチェックすることが推奨されます。以下はその例です。

    $fileType = $_FILES['uploadedFile']['type'];
    $fileName = $_FILES['uploadedFile']['name'];
    $fileExtension = pathinfo($fileName, PATHINFO_EXTENSION);
    $allowedMimeTypes = array('image/jpeg', 'image/png', 'application/pdf');
    $allowedExtensions = array('jpg', 'png', 'pdf');
    if (in_array($fileType, $allowedMimeTypes) && in_array($fileExtension, $allowedExtensions)) {
       // サポートされているファイルタイプの処理
    } else {
       // サポートされていないファイルタイプの処理
    }

    上記の例では、$allowedMimeTypesおよび$allowedExtensions配列に許可されるMIMEタイプとファイル拡張子を定義し、in_array()関数を使用してアップロードされたファイルのMIMEタイプと拡張子が許可されるリストに含まれているかどうかをチェックしています。