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


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


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


 
загрузка...

Комментарии   

 
0 #4 Maira 16.03.2018 20:13
I've been exploring for a little for any
high quality articles or blog posts on this kind of space .
Exploring in Yahoo I eventually stumbled upon this web site.

Studying this info So i am happy to convey that I've an incredibly good uncanny feeling I
discovered just what I needed. I most indisputably will make sure
to don?t disregard this web site and give it a
look regularly.

Here is my blog post; dieta ricca di potassio: http://ixivur.dieta-vita.com
Цитировать
 
 
0 #3 Margo 07.01.2018 00:15
Do you have a spam problem on this blog; I also am a
blogger, and I was wondering your situation; many of us have
created some nice methods and we are looking to swap methods with other folks, be sure to shoot me an email if interested.


Also visit my weblog - specadieta.com: http://specadieta.com/
Цитировать
 
 
0 #2 Brooke 26.04.2017 10:34
Great write-up, I am regular visitor of one's blog, maintain up the excellent operate, and It is going to be a regular visitor for a
long time.

Also visit my homepage посетить сайт источник (elamed.info: http://elamed.info/)
Цитировать
 
 
0 #1 Robin 15.04.2017 23:10
I would like to take the ability of saying thanks to you
for that professional guidance I have constantly enjoyed viewing your site.

I will be looking forward to the commencement of my university
research and the whole planning would never have been complete
without visiting this site. If I can be of any assistance to others, I will be thankful to help
by means of what I have discovered from here.

My site Посетить Вебсайт (geschenkefuermaenner.info: http://geschenkefuermaenner.info/)
Цитировать
 

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


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