Простая математическая капча
govnoproger.ru > php >
Собственно написал простенькую капчу. Подойдёт для защиты чего угодно. Можно улучшить если потребуется.
<?php if (!isset($_SESSION)) session_start(); if ( !isset($_POST['answ'])||(!isset($_SESSION['ans'])) ) // проверяем есть ли в посте answ - ответ или не существует ли ответ в сессии, если нету значит его уничтожили, либо первый запуск { //тут ничего особенного просто генерируем ответ $one=rand(0,20); $two=rand(0,20); if (rand(0,1)>0) { $_SESSION['ans']=$one+$two; echo "$one+$two="; } else { $_SESSION['ans']=$one-$two; echo "$one-$two="; } //и записываем его в сессию } else { //если в посте есть данные значит он нажал на ответ if (is_numeric($_POST['answ'])) //проверяем число ли, если не делать то 0+0='' будет истинно { if ((intval($_POST['answ']))===(intval($_SESSION['ans']))) //проверяем эквивалентностью опять же из-за возможного нуля в ответе { // дальше код понятен и не требует комментариев echo 'ок'; unset($_SESSION['ans']); } else { echo 'неверно ответ '.$_SESSION['ans']; unset($_SESSION['ans']); unset($_POST['answ']); } } else { echo 'неверно ответ '.$_SESSION['ans']; } } //ниже штмл форма ?> <form method="POST" action="<?= $_SERVER['PHP_SELF'] ?>"> <input type="text" name="answ"><br /> <input type="submit" class="form-submit" value="ок" /> </form>
Результат выполнения:
Вордпресс трёт пост параметры, так что просмотра не будет.
Скачать mathcap.zip
Ребята, не нужно захламлять эту страницу тестовыми комментариями. Я их удаляю.
На этом сайте все-равно используется другой плагин.
Как капча, код сам по себе рабочий. Просто допилите немного.