MagicGTS
Новичок
Защита от "чужих" ссылок
Видел на форуме такую тему, но когда понадобилась не смог отыскать.
Задача вот какая, определить что ссылка на скачиваемый файл (файл отдаётся скритом) была взята юзером с другого сайта. Если оно так, то показать фигу.
Идея мне понятна, и даже реализация работает, но вот тока многие жалуются что им фигу кажут даже если кликнули на ссылку с сайта
Вот код который использую, чувствую надо что-то добавить\изменить:
Возможно дело в проверке ""!=$_SERVER['HTTP_REFERER'] . Не все качалки выставляют эти хидеры, да и браузер может не ставить. Да мало ли кто может прибить это поле... Тут правда ньюанс
пока писал и проверял пост, обнаружил что вместо ""!=$_SERVER['HTTP_REFERER'] проверялось ""!=isset($_SERVER['HTTP_REFERER']) ,что и могло давать такие неприятные результаты.
Может у кого есть решение более красивое или полное? Поделитесь пожалста.
Видел на форуме такую тему, но когда понадобилась не смог отыскать.
Задача вот какая, определить что ссылка на скачиваемый файл (файл отдаётся скритом) была взята юзером с другого сайта. Если оно так, то показать фигу.
Идея мне понятна, и даже реализация работает, но вот тока многие жалуются что им фигу кажут даже если кликнули на ссылку с сайта

Вот код который использую, чувствую надо что-то добавить\изменить:
PHP:
if(isset($_SERVER['HTTP_REFERER']) && ""!=$_SERVER['HTTP_REFERER'])
{
preg_match("/^(http:\/\/)?([^\/]+)/i", $_SERVER['HTTP_REFERER'], $matches);
if(0==strcasecmp($matches[2], $_SERVER['SERVER_ADDR']) || 0==strcasecmp($matches[2], $_SERVER['SERVER_NAME']))
{
//Типа отдаем файл
}
else
{
//кажем фигу
}
}
пока писал и проверял пост, обнаружил что вместо ""!=$_SERVER['HTTP_REFERER'] проверялось ""!=isset($_SERVER['HTTP_REFERER']) ,что и могло давать такие неприятные результаты.Может у кого есть решение более красивое или полное? Поделитесь пожалста.

