Только для избранных

Только для избранных

Уроки

Однажды один человек задал мне вопрос примерно такого содержания: «А можно как-нибудь сделать так, чтобы специальный код на моей странице открывался только тем, кто нажмёт кнопку на конкретном сайте? И чтобы этого не было видно никак?».

Под «чтобы этого не было видно никак» подразумевалось, что ни в самой ссылке, не в открываемом адресе не присутствовало никаких параметров для запросов. И чтобы ещё в cookie ничего не записывалось: нужен контент на странице Х => переходи на страницу Y, жми на ссылку и обретай нужное. А что вы знаете о накрутке, хехе? 🙂

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

Но если человеку очень нужно, то почему бы и не помочь? Вначале при постановке вопроса меня немного стопорнуло. Но потом решение как-то само пришло в голову (честно, не помню как — уже года два прошло).

На деле код очень простой, практически находящийся на поверхности:

$refferer = $_SERVER['HTTP_REFERER'];
$truerefferer = 'http://localhost:8888';

echo 'Совершен переход с сайта ' . $refferer . '<br>';

if (strpos($refferer, $truerefferer) !== false) {
    echo 'Переход с данного сайта открывает доступ';
} else {
    echo 'Переход с данного сайта не открывает доступ';
}

Теперь разберём код. Во первых строках мы узнаём адрес, с которого зашёл пользователь — в этом нам помогает классный глобальный массив $_SERVER, из которого мы забираем адрес, с которого стартовал пользователь и записываем в переменную $refferer.

Теперь определим тот адрес, с которого можно открыть данные — для этого создаём переменную $truerefferer, ибо только ТРУЪ достойны лицезреть тайные знания.

Далее я написал строку с echo — для отладки, чтобы видеть, с какого адреса был зарегистрирован вход. Её можно удалить.

Теперь мой любимый if — сравним значения с помощью функции strpos(). Она предназначена для поиска подстроки в строке — т.е. мы будем искать, есть ли в $refferer что-то из $truerefferer. И если содержит (не false), то мы подгружаем далее нужный нам контент.

Здесь есть такой момент — если вы хотите ограничить диапазон с одной конкретной страницы, то нужно указывать её полный адрес (можно без https://). А если вы допускаете возможность, что пользователи могут зайти с любой страницы/раздела сайта, то можно указать только домен и часть пути. Посему данный вариант несколько лучше, чем просто сравнение двух переменных, хотя и такой вариант имеет место быть.

Надеюсь, данный метод однажды кому-либо поможет.

Анатолий Куликов

Анатолий Куликов

Автор блога, дизайнер, веб-разработчик
  • at sign
  • vk logo