Я планирую создать портал www на PHP, где будет храниться много картинок.Я решил хранить картинки в каталогах на сервере (не в БД) по причине производительности.Некоторые изображения будут доступны для всех пользователей из Интернета, а некоторые (если пользователь установил их как личные) не в соответствии с идентификатором сеанса.Как лучше всего решить эту проблему?Перфорация важна.Должен ли я использовать какой-нибудь mod_rewrite или переместить личные файлы в другой каталог, кроме публичного?
Джон
Храните личные файлы за пределами вашего wwwroot, доступный только через php-скрипт, который проверяет права доступа и перенаправляет на страницу 403 или серверы изображения, например, через readfile ().
Есть два варианта:
Сохраните изображения в некоторой общедоступной папке корня вашего сайта, назовите файлы так, чтобы имя файла не могло быть угадано (случайным образом сгенерировано и не последовательно), и убедитесь, что индексация каталога отключена. Размещайте только ссылки на изображения, которые пользователь имеет право просматривать. При условии, что они не делятся ссылками на свои личные фотографии, людям будет очень трудно случайно (или намеренно) наткнуться на частные фотографии.
Храните изображения вне корня вашего сайта и отправляйте их с помощью сценария, который выполняет аутентификацию в сеансе. Есть примеры того, как прочитать изображение в память и вывести его в браузер на странице imagejpeg PHP.net
imagejpeg