Php, загрузка файла одного типа pdf, как сделать проверку, чтобы посторонние файлы нельзя было загружать?

Сделал загрузку pdf файла на сервер, теперь думаю как добавить проверку уже в мой метод php. Чтоб можно было загружать только pdf.

<input type="file" name="pdffile" accept="application/pdf">

Функция загрузки и генерации имени:

if (isset($_FILES['pdffile']['tmp_name']) && ($_FILES['pdffile']['tmp_name'])) {
        $orderpdf = ORM::factory('Order', $id);
        if ($orderpdf->loaded()) {
          if ($orderpdf->pdffile != '') {
            @unlink('media/uploads/pdf/' . $orderpdf->pdffile);
          }
        }

        $symbols = '0123456789abcdefghijklmnopqrstuvwxyz';

        $filename = '';
        for ($i = 0;
          $i < 5;
          $i++
        ) {
          $filename .= rand(1, strlen($symbols));
        }
        $ext = pathinfo($_FILES['pdffile']['name'], PATHINFO_EXTENSION);
        $filename = 'karta-dk-' . $filename . '.' . $ext;
        $a = @move_uploaded_file($_FILES['pdffile']['tmp_name'], 'media/uploads/pdf/' . $filename);
        $data['pdffile'] = $filename;
      }

Ответы (2 шт):

Автор решения: Sanya H
<?php
$finfo = finfo_open(FILEINFO_MIME_TYPE); // возвращает mime-тип
$mime_type = finfo_file($finfo, $filename);
finfo_close($finfo);
if ($mime_type === 'application/pdf') {...}

или так

<?php
$mime_type = mime_content_type($filename);
if ($mime_type === 'application/pdf') {...}

Документация вариант 1 Документация вариант 2

→ Ссылка
Автор решения: Eugene X

У PDF файлов есть заголовок, %PDF-1.4 где 1.4 версия. Прочитав первых 4 байта можно узнать что это %PDF или нет.

function isPDF($filename)
{
    $f = fopen($filename, 'rb');
    if ($f === false) return false;
    $header = fread($f, 5);
    fclose($f);
    return $header === '%PDF-';
}
→ Ссылка