Генерация случайной капчи

Рецепт №110. Из книги «128 рецептов php»
Перейти к оглавлению

Не редко, для защиты от спама формы, например, обратной связи, используется капча – картинка с набором символов. Как реализовать саму картинку-капчу, показано в этом рецепте.

Пример:

// список символов, используемых в капче
$let = '0123456789ABCDEFGH';  
// количество символов в капче
$len = 4;
// шрифт
$font = 'impact.ttf'; 
// Размер шрифта 
$fontsize = 20; 
// Размер капчи
$width = 100;
$height = 30;

// создаем изображение
$img = imagecreatetruecolor($width, $height);  
// фон
$white = imagecolorallocate($img, 220, 220, 220); 
imagefill($img, 0, 0, $white); 
// Переменная, для хранения значения капчи
$capchaText = ''; 
 
// Заполняем изображение символами
for ($i = 0; $i < $len; $i++){ 
    // Из списка символов, берем случайный символ 
    $capchaText .= $let[rand(0, strlen($let)-1)];  
    // Вычисляем положение одного символа
    $x = ($width - 20) / $len * $i + 10; 
    $y = $height - (($height - $fontsize) / 2);     
    // Укажем случайный цвет для символа
    $color = imagecolorallocate($img, rand(0, 150), rand(0, 150), rand(0, 150));  
    // Генерируем угол наклона символа 
    $naklon = rand(-30, 30);  
    // Рисуем символ
    imagettftext(
  $img, $fontsize, $naklon, $x, 
  $y, $color, $font, $capchaText[$i]
  ); 
}

// заголовок для браузера
header('Content-type: image/png'); 
// вывод капчи на страницу
imagepng($img);  
// чистим память
imagedestroy($img);
Рассказать друзьям:


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*