Как я могу узнать, запрашивается ли изображение, сгенерированное с помощью PHP, с моего веб-сайта или с какого-либо другого веб-сайта?

#php

#php

Вопрос:

Как я могу узнать, когда изображение (сгенерированное с помощью PHP) вызывается с моего веб-сайта или с другого?

Я пытался с

if(eregi("mydomain.com", $_SERVER[SERVER_NAME])

но, похоже, возвращает всегда true, даже если

 <img src='..linktofilephptogeneratetheimage..'   >
  

находится на сервере anther

Спасибо

Комментарии:

1. Простое примечание: Поскольку PHP.net рекомендации перейти на PHP5.3 eregi скоро будут отменены.

Ответ №1:

Вы захотите использовать $ _SERVER[‘HTTP_REFERER’], чтобы получить страницу, которая ссылается на изображение. Затем сопоставьте этот путь с доменом, с которого вы ожидаете получить доступ к изображению (ваш собственный сайт).

Если это приемлемо, то отправьте изображение; если нет, то повторите фиктивное изображение или что-то еще.

Примечание: Некоторые веб-клиенты могут редактировать эту переменную вручную, но если вы просто пытаетесь избежать использования вашего сайта людьми для показа изображений на других страницах, она должна быть достаточно надежной.

Комментарии:

1. я только что привязал его, но, похоже, все еще не работает с if (!eregi («mydomain.com «, $_SERVER[‘HTTP_REFERER’])) die (‘ошибка’);

2. @oscurodrago: Используйте strpos . ereg устарел (его заменой является preg_match ).

3. Могу я спросить, почему вы используете устаревшую функцию PHP? Если вы просто пытаетесь увидеть, есть ли это доменное имя в строке ссылки, просто используйте if (strpos($_SERVER[‘HTTP_REFERER’],»mydomain.com «)>-1) или if(preg_match(«mydomain.com «,$_SERVER[‘HTTP_REFERER’])!=0).

4. хорошо, я использовал strpos, и теперь это работает, также я упорядочил его с помощью if ( ! strpos ($_SERVER[‘HTTP_REFERER’], $ _SERVER [‘SERVER_NAME’]) ) )