ФорумПрограммированиеPHP для идиотов → Велосипед с капчей.

Велосипед с капчей.

  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 19 февраля 2010 г. 12:51, спустя 6 минут 45 секунд

    ясный пень: подделать как нехуй делать. при этом N реальных пацанов будет послано нахуй. нехорошо!
    ιιlllιlllι унц-унц
  • Ёл

    Сообщения: 48 Репутация: N Группа: Кто попало

    Spritz 19 февраля 2010 г. 14:22, спустя 1 час 31 минуту 25 секунд

    Вот - рабочий пример, написал на коленке. Потестил, нахуй не посылает. Желания реальных пацанов учёл ;)

    Чтобы робот-спамер прошёл через такую форму он должен уметь эмитировать фокус на инпут либо парсер должен быть написан конкретно для этого случая. Если первое, то этот способ вообще не работает, если второе, то вашим сайтом всерьёз заинтересовались - радуйтесь, это успех, без тяжёлой артилерии уже не обойтись :D

    Может я и неправ, поправьте :)

    <?php // test.php

    if($_POST[$_SESSION['capcha']] != $_SESSION[$_SESSION['capcha']])
    {
    die('пшолнах');
    }
    else
    {
    // …
    }

    if($_SESSION)
    {
    session_destroy();
    }

    session_start();
    $_SESSION['capcha'] = md5(time());
    $_SESSION[$_SESSION['capcha']] = md5(time()*time());

    ?>

    <script src="jquery.js"></script>
    <script type="text/javascript">
    $(document).ready(function()
    {
    $('#no_js').hide(); // привет, Павлик
    $('input[type=submit]').show();

    $('input').focus(function()
    {
    $('#<?=$_SESSION['capcha']?>').attr('value', '<?=$_SESSION[$_SESSION['capcha']]?>');
    $('#no_js').html('Debug: Вы не робот, спасибо…').slideDown('slow');
    });
    });
    </script>

    <form method="post">
    <input type="hidden" name="<?=$_SESSION['capcha']?>" value="" id="<?=$_SESSION['capcha']?>">
    Ваше имя: <input type="text" name="username" value="">

    <input type="submit" value="отправить" style="display:none">
    <p id="no_js">Реальный пацан, включи JavaScript в своём браузере. С уважением, П. Дуров</p>
    </form>

  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 19 февраля 2010 г. 14:43, спустя 20 минут 56 секунд


    Вот - рабочий пример, написал на коленке. Потестил, нахуй не посылает. Желания реальных пацанов учёл ;)

    Чтобы робот-спамер прошёл через такую форму он должен уметь эмитировать фокус на инпут либо парсер должен быть написан конкретно для этого случая. Если первое, то этот способ вообще не работает, если второе, то вашим сайтом всерьёз заинтересовались - радуйтесь, это успех, без тяжёлой артилерии уже не обойтись :D

    Может я и неправ, поправьте :)

    <?php // test.php

    if($_POST[$_SESSION['capcha']] != $_SESSION[$_SESSION['capcha']]) // равны. Сессия не инициирована следовательо $_POST[''] == '' => все капчу проходят
    {
    die('пшолнах');
    }
    else
    {
    // …
    }

    if($_SESSION) //тут фальш. Из предыдущего
    {
    session_destroy();
    }

    session_start(); //это выше нужно
    $_SESSION['capcha'] = md5(time()); //может хотя бы соль добавить? *Придираюсь*
    $_SESSION[$_SESSION['capcha']] = md5(time()*time()); // То же самое

    ?>

    <script src="jquery.js"></script>
    <script type="text/javascript">
    $(document).ready(function()
    {
    $('#no_js').hide(); // привет, Павлик //если я не ошибаюсь, то надпись исчезнет через пару секунд. Не комильфо, если не ошибся.
    $('input[type=submit]').show();

    $('input').focus(function()
    {
    $('#<?=$_SESSION['capcha']?>').attr('value', '<?=$_SESSION[$_SESSION['capcha']]?>');
    $('#no_js').html('Debug: Вы не робот, спасибо…').slideDown('slow'); //Почему слайд даун? :D
    });
    });
    </script>

    <form method="post">
    <input type="hidden" name="<?=$_SESSION['capcha']?>" value="" id="<?=$_SESSION['capcha']?>">
    Ваше имя: <input type="text" name="username" value="">

    <input type="submit" value="отправить" style="display:none">
    <p id="no_js">Реальный пацан, включи JavaScript в своём браузере. С уважением, П. Дуров</p>
    </form>




    Откоментил. Ну а в общем норм. Сойдет для сельской местности.
    Спустя 68 сек.
    Ну а если жс не включен, то извольте уважать реальных пацанов с оперой мини и включить обычную капчу.
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 19 февраля 2010 г. 14:58, спустя 15 минут 3 секунды


    Я юзаю банальную систему: делаю обычное текстовое поле с name'ом email (один из самых искомых роботами), собачу вокруг него <span></span>, спану даю класс стилевой, например .huy_uvidish, далее скрываю стилями этот спан (то есть, юзер уже не видит поле для ввода) и при отправке формы проверяю на заполненость переменной. Если она не пустая, то ничего не делаю (не отправляю мыло. не добавляю в базу, прочее), но пользователю отправляю ответ что мол все ок, ты охуенен. В результате спам уменьшается процентов на 70-90.


    Васяц же в бложеге у себя писал как он спам-ботов подобными способами травил
  • drugoi

    Сообщения: 71 Репутация: N Группа: Адекваты

    Spritz 15 марта 2010 г. 22:16, спустя 24 дня 7 часов 17 минут


    файлик с JS может быть отфильтрован каким-нибудь параноидальным фильтром или просто блять не успеть скачаться. ну всякое бывает. почему пользователь должен быть послан нахуй? и главное пользователь даже не поймет за что. это дурной тон полагаться на JS на 100%. он должен помогать, но не быть необходимым!

    Золотые слова, "Юрий Венедиктович" :D

Пожалуйста, авторизуйтесь, чтобы написать комментарий!