В рамках своей разработки, включил данный функционал (идея моя) который можно применить на любом сайте. Он прост до безобразия!
Пока не вижу подводных камней.
Собственно как это работает:
Как видно из кода, идет проверка реферер key.
В Конфиговский файл своего сайта или форума нужно добавить:
- Код: Выделить всё
<?php
define('SITEURL', 'http://mysite.ru/'); // Используйте переменную своего движка
define('SALT', 'соль'); // Статическая соль
?>
файл генерации Ref ключа: key-gen.php
- Код: Выделить всё
<?php
$date = date("Ymd:Hi"); // Динамическая соль
$ip = $_SERVER["REMOTE_ADDR"]; // IP Клиента (необязательно, можно и убрать из кода переменную $ip)
$user_key = md5(SALT.$ip.$date); // Хешируем (сам ключ)
//echo $user_key;
header('Location: '.SITEURL."ref.php?key=".$user_key); // Генерацию REFERER-KEY можно сделать js-криптом, таким образом будет проверка у клиента JS= ON|OFF
?>
файл с сылками на регистрацию авторизацию и тд: ref.php
- Код: Выделить всё
<?php
echo "Пишем ссылки";
?>
Файл самой авторизации и регистрации: login.php где и будет проходить конечная проверка
- Код: Выделить всё
<?php
$date = date("Ymd:Hi");
$ip = $_SERVER["REMOTE_ADDR"];
$user_key = md5(SALT.$ip.$date);
header('Content-Type: text/html; charset=utf-8');
if(eregi($user_key, $_SERVER['HTTP_REFERER']) == false)
die('Неудача, попробуйте <a title="Попробовать ещё раз!" href="/key-gen.php">еще раз</a>!');
?>
Время действия ключа до 1 минуты.
Если неудача, нужно заново повторить переход по ссылке.
Код можно упростить до функции. Кому как будет нужно или удобно.
Ваши мнения?