Чтение первых байтов из загруженного файла. Например, именно так я проверял загруженные файлы при создании аналогичных функций.
$f = fopen($_FILES['tmp_name'], "rb");
fseek($f, 1);
$in = fgets($f, 19);
fclose($f);
if ($in == 'FICHIER GUITAR PRO') { ... }
Таким образом, чтение символов с 1 по 19 дало бы мне строку «FICHIER GUITAR PRO». Этот подход работал для меня для файлов gp4. Также я использовал для проверки расширений файлов.
Однако имейте в виду, что нет реальной проверки, которую вы можете выполнить для фильтрации вредоносных загрузок, поскольку подделка первых байтов, а также расширения довольно проста. Так что всегда должна быть некоторая дополнительная модерация всех загружаемых файлов.