Отдача апачем картинки

12 3
W
На сайте с 16.04.2006
Offline
60
1865

Прошу помочь решить задачу. Что то типа антилича наоборот.

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

Если загружается с родного сайта должен выполнятся редирект.

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

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

Т.е загружается на левом сайте, получаем соответственно левый реферер.

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

Задача не разрешима?

VPS / VDS, виртуальный платный и бесплатный хостинг (http://www.granthost.org/)
[umka]
На сайте с 25.05.2008
Offline
456
#1

Не совсем понятна задача.

Если вы хотите, чтобы превьюшки показывались везде, в т.ч. на сторонних сайтах, а большие картинки только на вашем, так и проверяйте Referer-а только для больших картинок.

Всё это можно решить средствами htaccess.

Лог в помощь!
W
На сайте с 16.04.2006
Offline
60
#2

фотохостинг, пользователи ставят у себя на сайтах превьюшки, ссылка с превьюшки ведет на большую картинку

вместо того, чтобы перейти на страницу jpg.html, где вместе с большой картинкой будет висеть реклама, переходят на jpg для просмотра полноразмерного изображения.

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

Как определить на сайте фотохостинга грузится картинка или отдается другому сайту?

Реферер при переходе с другого сайта на фотохостинг совпадает с адресом сайта с которого был выполнен переход, т.е в качестве параметра для выполнения редиректа не подходит.

[umka]
На сайте с 25.05.2008
Offline
456
#3
websmith:
фотохостинг, пользователи ставят у себя на сайтах превьюшки, ссылка с превьюшки ведет на большую картинку
вместо того, чтобы перейти на страницу jpg.html, где вместе с большой картинкой будет висеть реклама, переходят на jpg для просмотра полноразмерного изображения.

Т.е. вы хотите, чтобы нельзя было открыть на вашем сайте полноразмерный жпег в виде отдельной ссылки, а только на странице с рекламой?

Как вариант, можно проверять htaccess-ом, установлена ли у пользователя специфическая кука.

Если установлена, то делать реврайт на картинку и куку удалять.

Если же кука не установлена, то редиректить на страницу, где этот жпег должен показываться с рекламой.

При этом, в том же .htaccess отлавливать обращения к таким страницам и устанавливать куку.

Т.е. алгоритм такой.

Превьюшки отдаём всем желающим.

Ссылка с превьюшки ведёт на некий html.

1. При обращении к этому html отлавливаем этот момент в htaccess и устанавливаем куку

2. В этом html показываем рекламу и большую картинку

3. При обращении к большой картинке проверяем, установлена ли кука.

3.1. Если установлена, делаем реврайт на картинку и удаляем куку

3.2. Если не установлена, делаем редирект на html (т.е. шаг 1)

Всё это в .htaccess

Таким образом получается, что большой jpeg можно получить только после обращения к html-странице.

W
На сайте с 16.04.2006
Offline
60
#4
'[umka:
;9999243']
Т.е. алгоритм такой.
Превьюшки отдаём всем желающим.
Ссылка с превьюшки ведёт на некий html.

В том то и дело, что ссылка с превьюшки ведет не на html, а на jpg

Т.е делают вот так

[umka]
На сайте с 25.05.2008
Offline
456
#5
websmith:
В том то и дело, что ссылка с превьюшки ведет не на html, а на jpg
Т.е делают вот так

Во-первых, какая разница, куда она ведёт? Есть же реврайт.

Во-вторых, даже если она ведёт напрямую на жпег, то по схеме, которую я описал в предыдущем посте, сработает редирект на шаге 3.2 и пользователь отправится на html-страницу с рекламой.

---------- Добавлено 03.02.2012 в 18:41 ----------

Вообще всё можно обыграть и в виде одной ссылки.

Пользователям отдаём код, в котором ссылка на большую картинку ведёт напрямую на jpeg, т.е. примерно такую

http://your-super-image-host.ru/images/big/img12345.jpg

И при обращении по этому урлу проверяем, установлена ли кука.

Если установлена, то отдаём картинку и сбрасываем куку.

Если не установлена, делаем реврайт на скрипт, который устанавливает куку и выдаёт код с рекламой и картинкой по этому же самому урлу :)

W
На сайте с 16.04.2006
Offline
60
#6

картинку отдает out.php, он же ставит куку. И ставить куку он будет в любом случае, отдается картинка для чужого сайта или отдается непосредственно в браузер. Потому что скрипт не понимает кому он отдает, в браузер по прямому обращению к нему, или на чужой сайт.

Вот как его научить понимать куда он эту картинку отдает? Если сразу в браузер, делаем редирект на jpg.htm

если отдает на чужом сайте, выдавать превьюшку

[umka]
На сайте с 25.05.2008
Offline
456
#7

Вы меня не слышите :) Либо я плохо объясняю.

Если разрешить просмотр большой картинки только в строго определённой последовательности:

1. Сначала загрузка html-кода

2. Только затем загрузка большой картинки

То исключается сам вариант того, что картинка будет открыта в браузере одна одинёшенька.

---------- Добавлено 03.02.2012 в 19:06 ----------

В вашем случае, кстати, вообще достаточно сделать, чтобы при обращении к большим картинкам проверялся реферер, и если реферер не "out.php", то делать редирект на out.php

---------- Добавлено 03.02.2012 в 19:23 ----------

Вот пример :)

W
На сайте с 16.04.2006
Offline
60
#8

Спасибо большое, можно получить код, как это реализовано

[umka]
На сайте с 25.05.2008
Offline
456
#9
websmith:
если картинка грузится с чужого сайта, реферер соответствует адресу этого сайта,
если человек пришел с чужого сайта посмотреть полномасштабную картинку на сайт фотохостинга, опять же реферер равен адресу сайта с которого он пришел

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

В этом ведь случае картинку отдавать не нужно? Так и получается. Попробуйте разместить у себя мою большую картинку.

---------- Добавлено 03.02.2012 в 19:34 ----------

websmith:
Спасибо большое, можно получить код, как это реализовано

RewriteCond %{HTTP_REFERER} !^http://(www\.)?your-super-image-host\.ru

RewriteRule ^images/big/(.+)$ /path/to/out.php?img=$1 [L]

Это в .htaccess

Т.е. если к картинке в директории "/images/big" обращаются не с нашего хоста, то вместо неё отдаётся out.php, который выдаёт код с рекламой и этой же картинкой.

Надеюсь, пути сумеете поправить :)

W
На сайте с 16.04.2006
Offline
60
#10

спасибо еще раз

---------- Добавлено 03.02.2012 в 19:06 ----------

'[umka:
;9999566']Вы меня не слышите :) Либо я плохо объясняю.
Если разрешить просмотр большой картинки только в строго определённой последовательности:
1. Сначала загрузка html-кода
2. Только затем загрузка большой картинки
То исключается сам вариант того, что картинка будет открыта в браузере одна одинёшенька.

---------- Добавлено 03.02.2012 в 19:06 ----------

В вашем случае, кстати, вообще достаточно сделать, чтобы при обращении к большим картинкам проверялся реферер, и если реферер не "out.php", то делать редирект на out.php

---------- Добавлено 03.02.2012 в 19:23 ----------

Вот пример :)

Кстати в первый раз когда нажал на картинку сработало .т.е текст картинка текст

Сейчас попробовал еще раз, выводится только картинка, текст появляется только после обновления страницы, т.е когда адрес реферера совпадает с адресом вашего сайта.

вот и у меня та же история

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий