Ett stort problem idag är spam. Det bästa sättet att bekämpa spam är Captcha. Captcha gör skillnaden mellan en dator och en människa. Datorer kan inte läsa texten i en bild och det är därför vi kommer att använda ett foto också. Omdömen
Låt oss börja med att skapa filen captcha.php. Denna fil kommer att skapa ett foto med en text skriven på det Omdömen
header ("Content-typ: image /jpeg);.
//En JPEG-bild ska matas $ width = 60; //Bredd bild $ height = 24; //Höjd bild $ my_image = imagecreatetruecolor ($ bredd, $ höjd); //Skapa truecolor image imagefill ($ my_image, 0, 0, 0xFFFFFF); //Vit bakgrund Omdömen
Hittills har vi lyckats skapa en bild som har en vit bakgrund, 60 pixlar bred och 24 pixlar hög.
Låt oss lägga till några snedvridningar
för ($ c = 0; $ c $ x = rand (0, $ bredd 1), $ y = rand (0, $ höjd-1), imagesetpixel ($ my_image , $ x, $ y, 0x000000);} Omdömen
Vi insatt 40 svarta pixlar i bilden Dessa pixlar kommer att ha olika coordonates varje gång en bild laddas Omdömen
Låt oss skriva texten på.. Bilden:..
Omdömen
$ x = rand (1,10); //X coordonate av det övre vänstra hörnet $ y = rand (1,10); //Y coordonate av det övre vänstra hörnet $ rand_string = rand (10000,99999); //Skaffa ett nummer mellan 10000 och 99999 imagestring ($ my_image, 5, $ x, y $, $ rand_string, 0x000000); //Skriv det värde som erhålls tidigare på bilden Omdömen
Låt oss spara strängen skrivit på bilden i en cookie. Vi kommer att läsa den här cookien då en formell skickas för att jämföra data.
Omdömen
setcookie ("cookie-captcha" (md5 ($ rand_string)) , tiden () + 3600, "/"); //Skapa jpeg bild imagedestroy ($ my_image),; //Radera jpeg bilden Omdömen
I det här exemplet cookien namn är cookies imagejpeg ($ my_image) -captcha, är det innehållet kommer att vara det md5 kodade värdet av slumptalssträngen tidigare erhållits (antalet skrivet i bild), kommer det att vara giltigt för en timme på alla din domän. Omdömen
Bilden raderas (imagedestroy ) för att spara utrymme på servern Omdömen
Den fullständiga captcha.
php filen kommer att vara: Omdömen
header ("Content-typ: image /jpeg".); $ width = 60; $ höjd = 24; $ my_image = imagecreatetruecolor ($ bredd, $ höjd); imagefill ($ my_image, 0, 0, 0xFFFFFF); för ($ c = 0; $ c $ x = rand (0, $ bredd-1), $ y = rand (0, $ höjd-1); imagesetpixel ($ my_image, $ x, $ y, 0x000000);} $ x = rand (1,10), $ y = rand (1,10), $ rand_string = rand (10000,99999), imagestring ($ my_image, 5, $ x, y $, $ rand_string, 0x000000); setcookie ("cookie-captcha" (md5 ($ rand_string)), tid () + 3600, "/"), imagejpeg ($ my_image), imagedestroy ($ my_image);>