CAPTCHA – это простой тест, чтобы определить, является ли пользователь человеком или компьютером. Используется этот тест для защиты от спама или авторегистрации на сайте. В своей статье я покажу, как можно сделать CAPTCHA на php. Готовая CAPTCHA будет выглядеть примерно так:
![]()
Создаем файл captcha.php.
<?php
session_start();
session_register('code');
$height = 20;//Высота картинки
$width = 100;//Ширина картинки
/*Генерируем случайное число, для кода*/
$_SESSION['code'] = rand(10000, 99999);//генерируем 5-ти значное число
for($i = 0; $i < 5; $i++)
{
$m[$i] = substr($_SESSION['code'], $i, 1);
}
$image = imagecreate($width, $height); //Создаем изображение 100x20
$backgroundColor = imagecolorallocate($image, 204, 216, 6); //Задаем цвет для фона
$noiseColor = imagecolorallocate($image, 100, 120, 180);//Задаем цвет помех
$color = imagecolorallocate($image, 239, 8, 8);//Задаем цвет для чисел
for( $i = 0; $i < ($width*$height)/3; $i++ )
{
imagefilledellipse($image, mt_rand(0,$width), mt_rand(0,$height), 1, 1, $noiseColor);
}
/* Рисуем линии*/
for( $i = 0; $i < ($width * $height)/150; $i++ )
{
imageline($image, mt_rand(0, $width), mt_rand(0, $height), mt_rand(0, $width), mt_rand(0, $height), $noiseColor);
}
for($i = 0; $i < 5;$i++)
{
imagestring($image, 3, $y += 15, 3, $m[$i], $color);
}
header('Content-Type: image/jpeg');
imagejpeg($image);
?>
Создадим файл check.php.
<?php
session_start();
?>
<img src="captcha.php" />
<form method="post">
Введите число: <input type="text" name="getСode">
<input name="sub" type=submit value="Ввод">
</form>
<?php
if($_POST['sub'])
{
if($_POST['getСode'] == $_SESSION['code'])
{
echo "Число введено верно";
}
else
{
echo "Число введено неверно";
}
}
?>
- Регер аккаунтов 100zakladok.ru
- Пишем спамер WordPress блогов
- Yii, Модуль SRBAC часть 2. Пишем регистрацию.
- Создаем индикатор сложности пароля
- Русско-английский переводчик, с помощью Google AJAX Language API
Теги: PHP, Полезные скрипты

imagestring($image, 3, $y += 15, 3, $m[$i], $color);
«$y» непонятно уткуда взялос+ капча не работает
Reply
Каптча работает правильно. $y задается в imagestring($image, 3, $y += 15, 3, $m[$i], $color), т. е. первоначальное значение $y = 15. Далее в цикле значение $y увеличивается на
15.
Это можно проверить так:
< ?php
for($i=0; $i<5; $i++) {
echo " ";
echo $y += 15;
}
?>
Reply
Спасибо проверю данный код в действии
Reply
хм… при обновлении каптча бесполезна… тоесть вот я заполнил форму.. ввёд неправильно каптчу – выдало ошибку.. нажал назад ввел верно.. всё норм.. при обновлении той же формы каптча не показывает сообщение что каптча введена неверно..
Reply
Скрипт работает, все норм, но… Как можно увеличить размер цифр? (сорри я ток пару недель php изучаю)
Reply
Dimka
Размер цифр, а точнее вид шрифта задается в этой строке:
imagestring($image, 3, $y += 15, 3, $m[$i], $color);
Чтобы сделать цифры больше, замените 3 на 5:
imagestring($image, 5, $y += 15, 3, $m[$i], $color);
Reply
captcha ne rabotaet.
Reply
Max Reply:
Июль 12, 2011 at 22:02
Что именно не работает? Какое сообщение об ошибке вы получаете?
Reply
Спасибо, очень помогло!!!)))
Reply
Работает капча! )
Reply