#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’]) ) )