ограничить доступ к файлам изображений для зарегистрированных пользователей только в php

Предположим, у пользователя А есть несколько изображений в его / ее учетной записи в Facebook, которые он / она может просматривать после входа в систему.

Если пользователь A выходит из системы и пробует URL-адрес одного из этих изображений, появляется сообщение типа «ограничение доступа».

Подумайте о социальной сети, построенной на PHP.

Как добиться такого контроля, чтобы НЕЛЬЗЯ просматривать изображения без входа на сайт ТОЛЬКО, как это делает Facebook?

Ответы на вопрос(1)

Переместите все изображения в папку, которая недоступна из Интернета.Реализуйте скрипт php (image.php), который проверяет, вошел ли пользователь в систему и принимает ли имя изображения в качестве входных данных (например, image.php? Name = flower.png).Если пользователь вошел в систему, отправьте правильное изображение типа контентаheader() http://il2.php.net/manual/en/function.header.php (изображение / PNG, например)Прочитайте файл с диска и отправьте его пользователю, используяreadfile() http://php.net/manual/en/function.readfile.php.Убедитесь, что люди не смогут получить доступ к файлам вне каталога изображений, отправив что-то вроде /images.php?name=/etc/hosts (было бы лучше принять идентификатор изображения вместо имени файла или хеш имя файла, вы можете использоватьmd5() http://il2.php.net/manual/en/function.md5.php чтобы создать хеш, но не забудьте назвать файлы изображений в соответствии с их хэшами md5, в этом случае вы всегда ищете файл изображения только в каталоге images).Если пользователь не вошел в систему, вы можете отправить собственное изображение с надписью «Пожалуйста, войдите» или просто прекратить выполнение сценария.
 Istiaque Ahmed25 окт. 2012 г., 13:39
Предположим, что URL-адрес изображения - mysite.com/images/img.jpg. Если этот URL будет достигнут, когда будет выполнен скрипт image.php /
 Istiaque Ahmed26 окт. 2012 г., 09:21
твоя первая ссылка в ответе (il2.php.net/manual/en/function.header.php) не работает
 Yaniro26 окт. 2012 г., 17:33
Если в вашем URL-адресе указан файл .jpg напрямую, а файл изображения напрямую доступен в Интернете, не будет простого способа убедиться, что его могут видеть только аутентифицированные пользователи, поэтому все, если ссылки должны указывать на PHP скрипт, а не само изображение. Ссылка:php.net/manual/en/function.header.php
 Yaniro25 окт. 2012 г., 16:02
src атрибут изображения должен быть: mysite.com/image.php?name=img.jpg, чтобы скрипт image.php контролировал доступ к файлу изображения и отображал его только в том случае, если запрашивающий пользователь вошел в систему. Если он / она не вошла, скрипт должен прервать выполнение, иначе скрипт долженreadfile( 'path/images/img.jpg' ) для того, чтобы отправить изображение пользователю (также не забудьте использоватьheader() установить правильный тип контента.
 Istiaque Ahmed26 окт. 2012 г., 09:21
если URL-адрес mysite.com/images/img.jpg, какой атрибут src он попытается прочитать?

Ваш ответ на вопрос