Для поиска темы - пользуйтесь СИСТЕМОЙ ПОИСКА


Стоимость дипломной работы


Home Программирование Как сделать свою капчу в PHP

Как сделать свою капчу в PHP
загрузка...
Рейтинг пользователей: / 0
ХудшийЛучший 

Как сделать свою капчу в PHP

А как сделать капчу своими руками?
Вот и я не знаю…

Инструкция

Уровень сложности: Несложно

Что вам понадобится:

  • Место, где вам понадобится увиденное.

1 шаг

Сначала определимся, что пользователь должен будет вводить при проверке на бота (цифры, символы, математические действия).
В нашем случае пусть это будут цифры.

2 шаг

Эти цифры мы будем получать функцией rand.
Вот простой пример:
for ($k = 1; $k<=5 ; $k++)
{
$text.= rand(1, 9);
}
Этот цикл создаёт переменную $text и присваивает ей значение из 5 цифр(от 1 до 9). Количество цифр вы можете выбрать своё, изменив конченое значение $k в условии цикла for.

3 шаг

Теперь займёмся графикой.
$img = imagecreatetruecolor(110, 30); //Создаём изображение шириной 110 px, высотой 30px.
$white = imagecolorallocate($img, 255, 255, 255); // Присваиваем переменной $white белый цвет
$red = imagecolorallocate($img, 255, 0, 0);// Присваиваем переменной $red красный цвет
$black = imagecolorallocate($img, 0, 0, 0);// Присваиваем переменной $black чёрный цвет
imagesetthickness($img, 2); // Устанавливаем ширину линий
imagefill($img, 0, 0, $white); //Заливаем изображение белым цветом

4 шаг

Теперь переходим к процессу рисования цифр.
Но для начала уменьшим читабельность капчи проведя пару линий на картинке

imageline($img, 20, 0, 80, 13, $black); //Линия чёрного цвета
imageellipse ($img, 0, 0, 70, 40, $black); //Эллипс чёрного цвета

Рисуем цифры:
Т.к кол-во цифр на рисунке будет 5 то запускаем цикл со счётчиком.

for ($i = 1; $i<=5; $i++)
{
$r = $i*15; //Нужно, чтобы соблюдалась ширина между цифрами и они не лепились друг на друга.
if ($i % 2 == 0) // Условие, для выбора высоты цифры.
{
$sok=1.3;// Если $i делиться на 2 без остатка, то высота цифры увеличивается в 1.3 раза.
}
else
{
$sok= 1.5; // Иначе высота увеличивается в 1.5 раза.
}
if ($text{$i-1} == “1”)//Если цифра равна 1, то рисуем её
{
imageline($img, 7+$r, 5*$sok, 7+$r, 15*$sok, $black);
imageline($img, 7+$r, 5*$sok, 5+$r, 9*$sok, $black);
}
if ($text{$i-1} == “2”) {//Цифра 2
imageline($img, 5+$r, 6*$sok, 7+$r, 3*$sok, $green);
imageline($img, 7+$r, 3*$sok, 10+$r, 6*$sok, $green);
imageline($img, 10+$r, 6*$sok, 6+$r, 14*$sok, $green);
imageline($img, 6+$r, 14*$sok, 10+$r, 14*$sok, $green);
}
if ($text{$i-1} == “3”) {//Цифра 3
imageline($img, 5+$r, 5*$sok, 10+$r, 5*$sok, $green);
imageline($img, 10+$r, 5*$sok, 10+$r, 10*$sok, $green);
imageline($img, 10+$r, 10*$sok, 5+$r, 10*$sok, $green);
imageline($img, 10+$r, 10*$sok, 10+$r, 15*$sok, $green);
imageline($img, 10+$r, 15*$sok, 5+$r, 15*$sok, $green);
}
if ($text{$i-1} == “4”) {//Цифра 4
imageline($img, 5+$r, 4*$sok, 5+$r, 10*$sok, $green);
imageline($img, 5+$r, 10*$sok, 10+$r, 10*$sok, $green);
imageline($img, 10+$r, 10*$sok, 10+$r, 4*$sok, $green);
imageline($img, 10+$r, 10*$sok, 10+$r, 15*$sok, $green);
}
if ($text{$i-1} == “5”) {//Цифра 5
imageline($img, 5+$r, 4*$sok, 11+$r, 4*$sok, $green);
imageline($img, 5+$r, 4*$sok, 5+$r, 10*$sok, $green);
imageline($img, 5+$r, 10*$sok, 11+$r, 10*$sok, $green);
imageline($img, 11+$r, 11*$sok, 11+$r, 15*$sok, $green);
imageline($img, 11+$r, 15*$sok, 5+$r, 15*$sok, $green);
}
if ($text{$i-1} == “6”) {//Цифра 6
imageline($img, 10+$r, 4*$sok, 5+$r, 4*$sok, $green);
imageline($img, 5+$r, 4*$sok, 5+$r, 15*$sok, $green);
imageline($img, 5+$r, 15*$sok, 10+$r, 15*$sok, $green);
imageline($img, 10+$r, 15*$sok, 10+$r, 10*$sok, $green);
imageline($img, 10+$r, 10*$sok, 5+$r, 10*$sok, $green);
}
if ($text{$i-1} == “7”) {//Цифра 7
imageline($img, 5+$r, 5*$sok, 11+$r, 5*$sok, $green);
imageline($img, 11+$r, 5*$sok, 7+$r, 15*$sok, $green);
}
if ($text{$i-1} == “8”) {//Цифра 8
imageline($img, 5+$r, 5*$sok, 10+$r, 5*$sok, $green);
imageline($img, 5+$r, 5*$sok, 5+$r, 10*$sok, $green);
imageline($img, 5+$r, 10*$sok, 10+$r, 10*$sok, $green);
imageline($img, 10+$r,10*$sok, 10+$r, 5*$sok, $green);
imageline($img, 5+$r, 10*$sok, 5+$r, 15*$sok, $green);
imageline($img, 10+$r,10*$sok, 10+$r, 15*$sok, $green);
imageline($img, 5+$r, 15*$sok, 10+$r, 15*$sok, $green);
}
if ($text{$i-1} == “9”) {//Цифра 9
imageline($img, 5+$r, 5*$sok, 10+$r, 5*$sok, $green);
imageline($img, 5+$r, 5*$sok, 5+$r, 10*$sok, $green);
imageline($img, 5+$r, 10*$sok, 10+$r, 10*$sok, $green);
imageline($img, 10+$r, 10*$sok, 10+$r, 5*$sok, $green);
imageline($img, 10+$r, 10*$sok, 10+$r, 15*$sok, $green);
imageline($img, 10+$r, 15*$sok, 5+$r, 15*$sok, $green);
}
}
header(“Cache-control: private”);
header(“Content-type: image/png”);
imagepng($img);//Выводим изображение
imagedestroy($img);//Освобождаем память

5 шаг

И так если вы запустите ваш php файл с этим кодом, то вы увидите изображение.
Как теперь вложить это изображение, на страницу регистрации вашего сайта?
Очень просто:
<img src="/captha.php"/> //captha.php – ваш файл с созданием картинки
Вот пример капчи:
http://your-dreams.ru/reg.php
Вот получившийся код:
http://your-dreams.ru/kode.txt


 
загрузка...

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


Защитный код
Обновить