Обычно плохая привычка проверять тип файла, используя расширение. Я могу легко создать текстовый файл и переименовать его .jpg Согласно этому коду он внезапно станет настоящим изображением. Или даже еще большее зло: я мог бы использовать какую-то ошибку в веб-браузерах, создав поддельный jpg, который фактически выполняет некоторый код.
Кроме того, я могу назвать свои файлы в формате jpeg JPEG, jPG, jpG, JPeg или любую другую комбинацию, о которой вы можете подумать. Тогда есть и другие форматы, кроме JPEG. Я не знаю остальную часть вашего кода, но, возможно, вы хотите, чтобы кто-то разрешил загружать изображения в формате png или gif.
Если вы хотите быть более уверенным в том, что у вас действительно есть файл изображения, более надежный способ проверить это - использовать getimagesize . Это требует расширения GD. Если эта функция предоставляет вам вывод, который, вероятно, является реальным, вы намного безопаснее, используя этот файл в качестве изображения. Конечно, есть случаи, когда вам все равно, и вы просто хотите проверить расширение файла. Но я чувствую, что этот код должен стать немного публичным. Небольшой пример:
<?php
$file = $row['dfilepath'];
// where upload_dir is a function that somehow finds
// the absolute path of the upload dir
$path = upload_dir() . DIRECTORY_SEPARATOR . $file;
$valid = array('image/jpeg', 'image/gif', 'image/png');
$info = getimagesize($path);
if($info !== false && in_array($info['mime'], $valid) {
// more likely you'll actually have an image here
// now you might want to print some html here, like:
?><img src="/uploads/<?php print $file; ?>" alt="" /><?php
}
?>