КОнтакты, предложения, отзывы

.rar или .zip
Вложение
Онлайн-чат
На этом сайте, вы найдёте полезную информацию, практические советы в области веб-программирования, веб-дизайна и веб-разработок в целом. Мы с удовольствием поделимся с вами реальными примерами и решениями задач, связанных с jQuery , JavaScript , PHP и MySQL , версткой сайтов , поможем разобраться новичкам с современными технологиями, такими как Ajax , HTML5 , CSS3 и многими другими.

Делаем капчу для сайта

Без лишних слов )))

  session_start(); 

  error_reporting(E_ALL);

  $im = imagecreatetruecolor(177, 77); // создаём чёрную картинку с заданными размерами

  $background = imagecolorallocate($im, 118, 156, 117); // цвет фона
  $trans = imagecolortransparent($im, $background); // делаем фон прозрачным
  imagefill($im, 0, 0, $background); // заливаем кртинку прозрачным фоном

  // делаем массив из символов 
  $symbols = "qwertyuiopasdfghjklzxcvbnm1234567890";
  $symbols = preg_replace('/\w/','$0 ', $symbols);
  $symbols = preg_replace('/ $/', '', $symbols);
  $symbols = explode(' ', $symbols);
  $symbolsLen = count($symbols)-1;

  $string = ''; // определяем начальное значение создаваемой для капчи строки
  $strLen = 5; // скажем, что капча будет из пяти символов
  $angles = array(11, -11, 0, 17, -17); // углы наклона символов
  $size = 33; // величина шрифта

  // создаём массив цветов для букв
  $colors = array(
    imagecolorallocate($im, 217, 143, 130),
    imagecolorallocate($im, 255, 255, 254),
    imagecolorallocate($im, 205, 241, 146),
    imagecolorallocate($im, 232, 193, 128),
    imagecolorallocate($im, 189, 231, 155)
  );

  // и массив с названиями шрифтов
  $fonts = array('Shot19', 'Moonlight', 'Shot14', 'Shot3', 'Shot15');

  // и теперь в цикле::
  for($i = 0; $i < $strLen; $i++){
    $rand = rand(0, $symbolsLen); // случайный ключ из массива символов
    $rand2 = rand(0, $strLen-1); // случайное значение от  0 до 4
    $string .= $symbols[$rand]; // добавляем символ к строке
    
    // определение координаты х первого символа на изображении и последующих символов
    if($i === 0){
      $position = $size*$i+$size-7;
    }else $position = $position+$size-9;
     
    // пишем буковы на картинку
    imagettftext(
      $im, // ресурс изображения
      $size, // величина шрифта
      $angles[$i], // угол наклона
      $position, // ч-координата
      $size+17, // y-координата
      $colors[$rand2], // цвет буквы
      __DIR__."/fonts/".$fonts[$rand2].".ttf", // путь к шрифту
      $symbols[$rand] // конкретно сама буква
    );
  }

  // для последующей проверки с введёнными данными запишем строку в сессию
  $_SESSION['captcha'] = $string;

  // сохраним изображение
  imagepng($im, __DIR__.'/captcha.png');

  imagedestroy($im); // уберём ресурс из памяти
2017.05.28 123

Наконец-то искусственный интеллект достиг уровня человека: при заполнении электронных форм многие люди не могут с первого раза доказать, что они не роботы.
Войдите или Зарегистрируйтесь чтобы оставить комментарий

Комментарии


  • Ану-ка, с первого раза угадаю?

  • 2017.05.28 - 22:46

  • Не угадал

  • 2017.05.28 - 22:47

  • Ну вроде как бы пляшет

  • 2017.05.28 - 22:54

Яндекс.Метрика Яндекс.Метрика