Welcome to mirror list, hosted at ThFree Co, Russian Federation.

captcha.php « captcha « feedback - github.com/itchief/feedbackForm.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: ca14e68163e8916cc73d3c61f4200136070c1113 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php

/*
 * Форма обратной связи (https://itchief.ru/lessons/php/feedback-form-for-website)
 * Copyright 2016-2020 Alexander Maltsev
 * Licensed under MIT (https://github.com/itchief/feedback-form/blob/master/LICENSE)
 */

//открываем сессию
session_start();

$id = 'captcha';
if (isset($_GET['id'])) {
    $id = filter_var($_GET['id'], FILTER_SANITIZE_STRING);
}

// присваиваем PHP переменной captchastring строку символов
$captchaStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyz';
// получаем первые 6 символов после их перемешивания с помощью функции str_shuffle
$captchaStr = substr(str_shuffle($captchaStr), 0, 6);
// инициализируем переменной сессии с помощью сгенерированной подстроки captchastring,
// содержащей 6 символов
$_SESSION[$id] = $captchaStr;

// генерируем CAPTCHA

// создаем новое изображение из файла background.png
$image = imagecreatefrompng(dirname(__FILE__) . '/background.png');
// устанавливаем цвет (R-200, G-240, B-240) изображению, хранящемуся в $image
$colour = imagecolorallocate($image, 200, 240, 240);
// присваиваем переменной font название шрифта
$font = dirname(__FILE__) . '/oswald.ttf';
// устанавливаем случайное число между -10 и 10 градусов для поворота текста
$rotate = rand(-10, 10);
// рисуем текст на изображении шрифтом TrueType (1 параметр - изображение ($image),
// 2 - размер шрифта (18), 3 - угол поворота текста ($rotate),
// 4, 5 - начальные координаты x и y для текста (18,30), 6 - индекс цвета ($colour),
// 7 - путь к файлу шрифта ($font), 8 - текст ($captchaStr)
imagettftext($image, 18, $rotate, 28, 32, $colour, $font, $captchaStr);
// будем передавать изображение в формате png
header('Content-type: image/png');
//выводим изображение
imagepng($image);