Вы правы в своем первоначальном предположении. Храните ваши файлы вне публичного каталога и используйте PHP-скрипт для проверки авторизации и отображения изображения.
Чтобы обойти проблему совместного использования, вы можете дать им область, в которой они могут сказать «Поделиться этой фотографией», и на ней будет отображаться URL-адрес типа
http://www.yoursite.com/image/12390123?v=XA21IW
XA21IW будет некоторым уникальным хешем, хранящимся в таблице, и они могут указывать время жизни или вы можете сами его кодировать. Когда страница загружается и передается v, вы можете просмотреть таблицу, чтобы определить, является ли она действительным хешем для этого идентификатора изображения.
У вас есть несколько вариантов здесь. Каждый раз, когда они нажимают «Поделиться этой фотографией», вы можете:
- Уничтожить все старые хэши
- Добавить в стек
- Разрешить им настраивать срок действия и т.д ...
Или просто разрешить изображениям быть публичными / приватными.