2015-03-14 7 views
0

Следуя советам на этом веб-сайте, я использовал файл image.php для возврата ресурса изображения, так как suggested here (ссылка на изображения как файлы не является вариантом из-за ограничений безопасности).PHP: Как ограничить образы, возвращаемые файлом php на основе пользователей/групп?

Как я могу ограничить изображения, которые определенный пользователь может «получить» из этого файла image.php?

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

Этот файл image.php (возвращает изображение) действует как «автономный» скрипт (доступ к которому осуществляется с помощью атрибута HTML src с клиентской стороны), не загружается уже работающим потоком, и (простите меня, если я его неправильно пойму) не имеет переменных, указывающих, кто является пользователем и к чему он может получить доступ.

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

Как я могу ограничить образы, возвращаемые image.php, без создания дополнительной нагрузки на сервер?

EDIT: Я наблюдал на некоторых веб-сайтах, что image.php передает длинную переменную GET строки, может ли это быть методом?

Если я объясню себя неясным образом, пожалуйста, будьте терпеливы и дайте мне знать, я попробую уточнить.

+0

Есть ли данные сеанса, которые вы можете использовать? Если да, то есть ваш ответ – rjdown

+0

Да, конечно. Вы предлагаете загружать только ресурсы, необходимые для анализа сеанса, и использовать эти данные для контроля доступа? – Dean

ответ

1

Вам нужно как-то идентифицировать пользователя на image.php, и это будет зависеть от того, как вы создаете пользовательский сеанс. Если вы используете PHP сессии вы можете просто сделать:

session_start(); 
$username = $_SESSION['username']; 
// check permissions 

Большинством фреймворк используют адаптеры и обертки для PHP сессии, на image.php только var_dump ($ _ SESSION) и проверить, если информация, что нужно есть. Не забудьте вызвать session_start.

+0

Не было бы ресурсоемким, если бы у меня было около 20-50 изображений на странице? – Dean

+0

Проверка сеанса не является ресурсоемкой. Это минимум, который вам нужен. Передача всех изображений с помощью PHP-скрипта, как вы делаете, более ресурсоемкая, чем эта. – fromvega

+0

Просто выполните, если вы используете базу данных для хранения переменных сеанса, которые вы могли бы сделать быстрее, сохраняя соответствующую информацию в памяти, тем самым сохраняя поездку в базу данных. Это может ускорить процесс для 50 изображений. Я предлагаю вам взглянуть на memcache http://php.net/manual/en/book.memcache.php – fromvega