如何在delphi 2010中创建验证码验证?

时间:2011-12-20 10:54:08

标签: delphi delphi-2010 captcha

正如标题所要求的那样 - 我想知道我是否可以在我的注册表单中使用验证码验证(使用delphi 2010)

3 个答案:

答案 0 :(得分:4)

使用Image控件并绘制不同的元素以获取Captcha。 您可以使用以下代码绘制一些字母:

procedure TForm1.letrasAnguladas(c : string; angulo : integer; nextPos : Integer);
var
   logfont:TLogFont;
   font: Thandle;
begin
   LogFont.lfheight:=30;
   logfont.lfwidth:=10;
   logfont.lfweight:=900;

   LogFont.lfEscapement:=angulo;
   logfont.lfcharset:=1;
   logfont.lfoutprecision:=OUT_TT_ONLY_PRECIS;
   logfont.lfquality:= DEFAULT_QUALITY;
   logfont.lfpitchandfamily:= FF_SWISS;
   logfont.lfUnderline := 0;
   logfont.lfStrikeOut := 0;

   font:=createfontindirect(logfont);

   Selectobject(Image1.canvas.handle,font);

   SetTextColor(Image1.canvas.handle,rgb(0,180,0));
   SetBKmode(Image1.canvas.handle,transparent);

   Image1.canvas.textout(nextPos,Image1.Height div 3,c);
   SetTextColor(Image1.canvas.handle,rgb(Random(255),Random(255),Random(255)));
   deleteobject(font);
end;

你可以像这样使用它:

   for vX := 1 to Length(strCaptcha) do
      letrasAnguladas(strCaptcha[vX],Random(600)+1,25*vX-15);

最后,您可以使用与此类似的代码在验证码中添加一些代码:

  for i := 0 to 15 do begin
    Image1.Canvas.Pen.Color := Random(100000);
    Image1.Canvas.MoveTo(random(Image1.Width), random(Image1.Height));
    Image1.Canvas.LineTo(random(Image1.Width), random(Image1.Height));
  end;

更改参数并尝试其他修改结果。 您可以获得如下图像:

enter image description here

问候。

答案 1 :(得分:2)

验证它只是一个带有一些文字的图形。所以,你可以制作一个图像,然后输出一些 文字就可以了。如果您需要更多信息,那么您需要更全面地描述 是什么让你制作一个你不理解的验证码。

也许您可以保留数据库表中所有可能单词的列表,然后传递 你的验证码功能中的单词的id号。这样你就有办法了 知道用户是否输入了正确的单词并根据需要进行补充检查。

您可以在此处了解如何在图像上绘制透明文字:

Writing Transparent Text on Image

互联网上有很多例子。

或者,您可以使用组件为您完成工作。

答案 2 :(得分:0)

也许你可以拨打Google recaptcha api。