Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Ограничить доступ


Автор: tigger 30.12.2007, 09:00
На сайте есть папка Image из нее берутся картинки для index.php можно ли как нибудь сделать чтобы картинки не показывались в браузере например по ссылке типа http://moisait/image/bottom.jpg

Автор: DioNiR 30.12.2007, 09:57
Можно но зачем?
Если надо их всё равно скачают.

Внимательно читаем:
http://ru2.php.net/manual/ru/ref.image.php
Пример от туда:
Код
<?php
header("Content-type: image/png");
$string = $_GET['text'];
$im     = imagecreatefrompng("images/button1.png");
$orange = imagecolorallocate($im, 220, 210, 60);
$px     = (imagesx($im) - 7.5 * strlen($string)) / 2;
imagestring($im, 3, $px, 9, $string, $orange);
imagepng($im);
imagedestroy($im);
?>

"images/button1.png" - и есть путь картинки.
Пихаешь этот код в какой нить PHP файл но не в главный.
Затем картику выводишь уже адресс её будет не /image/bottom.jpg а например image.php

Автор: skyboy 30.12.2007, 10:41
при помощи http://httpd.apache.org/docs/1.3/howto/htaccess.html файла, размещенного в папке Image, можно запретить доступ через HTTP(сервер просто не будет пускать браузеры в эту папку - будет выдавать ошибку 503).
Как картинки в таком случае отдавать(очевидно, что получение <img src="/image/1.jpg" /> вернет ошибку 503) уже показал товарищ DioNiR.

Добавлено через 3 минуты и 59 секунд
Цитата(DioNiR @  30.12.2007,  08:57 Найти цитируемый пост)
уже адресс её будет не /image/bottom.jpg а например image.php 

подмену можно сделать при помощи http://en.wikipedia.org/wiki/Rewrite_engine. таким образом, кстати, можно будет выводить в страницу <img src="/images/1.jpg" />, что mod_rewrite будет преобразовывать в обращение к РНР-файлу типа "image.php?id=1.jpg"

Автор: tigger 1.1.2008, 06:24
Все понятно

DioNiR, а этот метод заметно уменьшит скорость загрузки страницы?

Автор: Staind 1.1.2008, 12:09
Цитата

DioNiR, а этот метод заметно уменьшит скорость загрузки страницы?

Конечно снизит, т.к. в данном случае работаем с библиотекой GD (но не на много). И вообще я не понимаю эту генерацию картинок и запрет по http. Не легче взять и пусть имя у картинки php генерирует типа sao4u5yt4f95e4jf.jpg, запоминаем куда-нибудь название и потом отдаем их всех скриптом? - или у вас там какая-то на картинках кондефициальная информация?

Автор: flashaa 1.1.2008, 13:19
Цитата(tigger @  30.12.2007,  09:00 Найти цитируемый пост)
На сайте есть папка Image из нее берутся картинки для index.php можно ли как нибудь сделать чтобы картинки не показывались в браузере например по ссылке типа http://moisait/image/bottom.jpg 

Проще всего как по трудоемкости, так и по производительности будет сделать так:
В папке  с картинками создаем файл .htaccess со следующим содержимым:

Код

RewriteEngine On
RewriteCond %{HTTP_REFERER} !%{SERVER_NAME}/...(тут вставляем путь до твоего index.php)
RewriteRule .*\.jpg$ - [R=404]


Вкратце о том, как это работает:
Первая строка включает модуль mod_rewrite сервера apache, без него ничего работать не будет.
Наличие mod_rewrite на сервере можно увидеть с помощью ф-ции php phpinfo(); в одной из секций.
Код

<?php phpinfo(); ?>

Cтрока RewriteCond задает условие переадресации. В данной строке проверяется условие того, что "рефферер" (страница, с которой юзер перешел к файлу) НЕ является index.php - проще говоря, если картинка открыта не с твоей страницы.
Если это условие срабатывает, будет выполнено правило переадресации ниже RewriteRule ... , которое означает переадресовать все jpg картинки на страницу с ошибкой "доступ отклонен".

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)