Я также обслуживаю свои изображения с помощью readfile, но я приложил дополнительные усилия для обеспечения безопасности и дополнительных функций.
У меня есть настроенная база данных, в которой хранится идентификатор изображения, его размеры и расширение файла. Это также означает, что изображения должны быть загружены (допускается необязательное изменение размера), поэтому я использую систему только для контента, а не для изображений, необходимых для самого сайта (например, фонов или спрайтов).
Он также очень хорошо справляется с тем, что вы можете запрашивать только изображения.
Таким образом, для обслуживания упрощенный рабочий процесс будет выглядеть следующим образом (здесь невозможно опубликовать производственный код):
1) получить идентификатор запрошенного изображения
2) Поиск в базе данных
3) Бросать заголовки, основанные на расширении («jpg» будет преобразован в «jpeg» при загрузке)
4) readfile("/images/$id.$extension");
5) При желании защитите / images / dir, чтобы его нельзя было проиндексировать (в моей собственной системе это не проблема, поскольку он сопоставляет URL-адреса, такие как / image / view / 11 , с чем-то вроде / index .php? модуль = изображения и действие = вид & ID = 11 * 1 021 *) * * тысяча двадцать-дв