php session_start пишем капчу сессию _SESSION code mt_rand 11111 99999

 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
<?php
session_start();
# пишем капчу в сессию
$_SESSION['code'] = mt_rand(11111, 99999);
# создаем объект изображения
$img = imagecreate(50, 18);
# создаем объект фона
$fon = imagecolorallocate($img, 255, 255, 255);
# заливаем фон
imagefill($img, 0, 0, $fon);
# заготовим цвет текста
$a = imagecolorallocate($img, rand(0, 204), rand(0, 204), rand(0, 204));
$b = imagecolorallocate($img, rand(0, 204), rand(0, 204), rand(0, 204));
$c = imagecolorallocate($img, rand(0, 204), rand(0, 204), rand(0, 204));
$d = imagecolorallocate($img, rand(0, 204), rand(0, 204), rand(0, 204));
$e = imagecolorallocate($img, rand(0, 204), rand(0, 204), rand(0, 204));
# строка с цифрами (фон, размер шрифта, x, y позиции, строка, цвет текста)
imagestring($img, rand(4, 5), rand(2,3), rand(0,3), substr($_SESSION['code'], 0, 1), $a);
imagestring($img, rand(4, 5), rand(11,12), rand(0,3), substr($_SESSION['code'], 1, 1), $b);
imagestring($img, rand(4, 5), rand(20,21), rand(0,3), substr($_SESSION['code'], 2, 1), $c);
imagestring($img, rand(4, 5), rand(29,30), rand(0,3), substr($_SESSION['code'], 3, 1), $d);
imagestring($img, rand(4, 5), rand(38,39), rand(0,3), substr($_SESSION['code'], 4, 1), $e);
# рисуем линии по верх цифр
for ($i=0; $i<3; $i++) {
$color = imagecolorallocate($img, rand(0, 255), rand(0, 200), rand(0, 255));
imageline($img, rand(1, 10), rand(1, 10), rand(100, 150), rand(1, 50), $color);
}
# отправляем заголовок
header('Content-type: image/gif');
# экранируем изображение
imagegif($img);
# чистим буфер
imagedestroy($img);