2012-06-23 5 views
1

У меня растущий веб-сайт с изображениями 30 тыс. Изображений в 4 размерах в общей сложности 120 тыс. Мое текущее решение хранит их в БД и из того, что я прочитал в стеке, это, кажется, очень плохая идея.Создание частной папки изображений?

Я начинаю понимать, почему. Я заметил резкое снижение производительности. думаю, очевидное решение состоит в том, чтобы переместить эти изображения в папку, и я хотел бы использовать идентификатор пользователя в качестве имени dir, а затем иметь общедоступный и закрытый поддиректор.

структура будет выглядеть следующим образом:

/54869 
    /public 
     /size_1/img1.jpg 
     /size_2/img1.jpg 
     /size_3/img1.jpg 
     /size_4/img1.jpg 
    /private 
     /size_1/img2.jpg 
     /size_2/img2.jpg 
     /size_3/img2.jpg 
     /size_4/img2.jpg 

Каков наилучший способ обеспечить эту личную папку и только предоставить другим пользователям доступ, если владелец файла предоставил разрешение?

Я также хотел бы запретить пользователям просто просматривать содержимое любой папки, но я полагаю, что мог бы выполнить проверку на стороне клиента, чтобы исправить это.

Любые мысли или предложения?

ответ

3

Вы можете сделать эту папку недоступной из Интернета (например, поместите папку за пределами htdocs или добавьте правила .htaccess).

Создайте PHP-скрипт, который обрабатывает все запросы к приватным изображениям. Этого скрипт должен будет сделать следующее:

  • проверки, если проверкой подлинности пользователя
  • проверить, если пользователь авторизован для просмотра запрошенного изображения
  • открыть изображение и распечатать его в браузер (вам необходимо установить правильные заголовки HTTP, чтобы убедиться, что содержание рассматривается как изображение)

Затем, в вашем HTML, просто указать на /secret_image.php?id=3 или, может быть, вы хотите использовать путь изображения /secret_image.php?p=/54869/public/size_1/img1.jpg

0

Вы можете попробовать это

imageViewer.php?imgID=XXX;  where XXX=hashFunction(salt.imgName) 

И делать всю обработку в imageViewer.php как если пользователь имеет разрешение или нет!

Смежные вопросы