Простая математическая капча

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

Рекомендую:

1.12.2010 | последняя редакция: 04.01.2011 |
  1. admin
    8.12.2011 в 17:18

    Ребята, не нужно захламлять эту страницу тестовыми комментариями. Я их удаляю.
    На этом сайте все-равно используется другой плагин.

    Как капча, код сам по себе рабочий. Просто допилите немного.