Blame view
app/Classes/Capcha.php
2.51 KB
ac8b91cfd Обновление системы. |
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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
<?php namespace App\Classes; class Capcha { public $USE_SESSION; public $chars; public $length; function __construct() { $this->USE_SESSION = true; // 1. Генерируем код капчи // 1.1. Устанавливаем символы, из которых будет составляться код капчи $this->chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyz'; // 1.2. Количество символов в капче $this->length = 6; } public function Release() { // 1.3. Генерируем код $code = substr(str_shuffle($this->chars), 0, $this->length); if ($this->USE_SESSION) { // 2a. Используем сессию session_start(); $_SESSION['captcha'] = crypt($code, '$1$itchief$7'); session_write_close(); } else { // 2a. Используем куки (время действия 600 секунд) $value = crypt($code, '$1$itchief$7'); $expires = time() + 600; setcookie('captcha', $value, $expires, '/', 'test.ru', false, true); } // 3. Генерируем изображение // 3.1. Создаем новое изображение из файла $image = imagecreatefrompng(__DIR__ . '/files/bg.png'); // 3.2 Устанавливаем размер шрифта в пунктах $size = 36; // 3.3. Создаём цвет, который будет использоваться в изображении $color = imagecolorallocate($image, 66, 182, 66); // 3.4. Устанавливаем путь к шрифту $font = __DIR__ . '/files//oswald.ttf'; // 3.5 Задаём угол в градусах $angle = rand(-10, 10); // 3.6. Устанавливаем координаты точки для первого символа текста $x = 56; $y = 64; // 3.7. Наносим текст на изображение imagefttext($image, $size, $angle, $x, $y, $color, $font, $code); // 3.8 Устанавливаем заголовки header('Cache-Control: no-store, must-revalidate'); header('Expires: 0'); header('Content-Type: image/png'); // 3.9. Выводим изображение imagepng($image); // 3.10. Удаляем изображение imagedestroy($image); } } |