Примитивная капча

  1. sub capcha {
  2. $url =$_[0];
  3. @array=('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','1','2','3','4','5','6','7','8','9');
  4. $a=0;
  5. $code = "";
  6. $raz = @array;
  7. while($a<8) {
  8. $code .=@array[rand($raz)];
  9. $a++;
  10. }
  11. $im = new GD::Image(100, 20);
  12. $white = $im->colorAllocate(255,255,255);
  13. $black = $im->colorAllocate(0,0,0);
  14. $red = $im->colorAllocate(255,0,0);
  15. $im->transparent($white);
  16. $im->interlaced('true');
  17. $im->rectangle(0, 0, 99, 19, $black);
  18. $im->string(gdGiantFont,1,1,$code,$red);
  19. open(PICTURE, ">tmp/$url.png");
  20. binmode PICTURE;
  21. print PICTURE $im->png;
  22. close PICTURE;
  23. open(LOG,">>tmp/$url.txt");
  24. print(LOG "$code\n");
  25. close(LOG);
  26. return $url;
  27. }
  1. #удаляем просроченые файлы
  2. #код писала уже
  3. del_bad("tmp",5); #5 минут хватит
  4. $rand = pass(18);
  5. $cap=capcha($rand);
  6. print"<img src =\"tmp/$cap.png\">\n";
  7. print "<input type=\"text\" name=\"capcha\">\n";
  8. print "<input type=\"hidden\" name=\"cap\" value=\"$cap\">\n";
для проверки открыть файл $query->param("cap") и считать записаную в него строку. :)

Реклама

Мы в соцсетях

tw tg yt gt