Загрузка...

An interesting way to protect against bots in PHP

Thread in Backend created by RaysMorgan Mar 27, 2016. 525 views

  1. RaysMorgan
    RaysMorgan Topic starter Mar 27, 2016 123 53,979 Mar 7, 2013
    Метод основывается на том, что большинство ботов вообще не поддерживают JavaScript, а если они и поддерживают его, то должны магическим образом научиться считывать содержимое нашего "антибот поля".
    Данный способ защитит вас от спам ботов на 100%.

    В нужную форму, например, регистрация вставляем скрытый input и наш javascript

    Code
    <form method="POST">
    <input type="hidden" name="check" class="check">
    <! -- Остальной код -->
    </form>
    <script>
    $(document).ready(function () {
    $('.check').val('<? echo $token;?>');
    });
    </script>
    Скрипт будет вставлять значение токена ($token) в скрытый input после полной загрузки страницы.


    В php файл вставляем:
    Code
    $token = md5(uniqid(mt_rand() . microtime()));
    $_SESSION['token'] = $token;
    Что делает код? Генерирует уникальный токен в MD5 и кладёт его в сессию.

    Далее, где у вас происходит обработка данных, вставляем код (пример):
    Code

    if (isset($_POST['submit'])) {
    $clientToken = $_POST['check']; // данные input'a из формы
    if ($serverToken) { // тут мы проверяем, не задана ли переменная, иначе в сессии будет другой токен, который сгенерируется только после нажатия на кнопку.
    $serverToken = $_SESSION['token'];
    }
    if ($clientToken != $serverToken) { // Если токены не совпадают, выдаем ошибку.
    exit;
    }
    // остальной код
    }

    Аналогичным способом можно сделать проверку через $_COOKIE
     
Loading...
Top