14 12
发新话题
打印

简单验证码的制作

本主题由 lg107142982 于 2008-6-15 15:35 提升

简单验证码的制作

想当初对验证码的制作还是比较好奇的,
后来查资料后自已写了一个
如果大家不懂制作验证码可以看看下面的代码
一个简单的验证码制作

protected void Page_Load(object sender, EventArgs e)
    {
        if(!Page.IsPostBack)
       this. checknum();
    }
    public void checknum()
{
     
        Bitmap bm = new Bitmap(100, 40);
        Graphics gp = Graphics.FromImage(bm);
        gp.Clear(Color.White);
        Random r = new Random();
        Pen p1 = new Pen(Color.YellowGreen,2);
        gp.DrawRectangle(Pens.Black, 0, 0, 99, 39);//画一个矩阵
        gp.FillRectangle(new SolidBrush(Color.SeaShell), 0, 0, 99, 39);//填充矩阵
        //产生四个随机数
        int num1 = r.Next(9);
        int num2 = r.Next(9);
        int num3 = r.Next(9);
        int num4 = r.Next(9);
        Session["number"] = num1.ToString()+num2.ToString()+num3.ToString() +num4.ToString();//把随机数存入session(用作对比)
        gp.DrawString(num1 + " " + num2 + " " + num3 + " " + num4, new Font("幼圆", 20), Brushes.Blue, 0, 10);//把随机数画出
        //作四条随机直线 (干扰线)
        for (int i = 1; i < 4; i++)
        {
            gp.DrawLine(p1, r.Next(20), r.Next(bm.Height), r.Next(80,100), r.Next(bm.Height));
        }
        //指定某些像数点的颜色 (干扰像素点)
        for (int i = 1; i < 100; i++)
        {
            bm.SetPixel(r.Next(bm.Width), r.Next(bm.Height), Color.Green);
            bm.SetPixel(r.Next(bm.Width), r.Next(bm.Height), Color.Red);
        }
        bm.Save(Response.OutputStream,ImageFormat.Gif);
        bm.Dispose();
        gp.Dispose();
      
           
}
运行结果如下:

当完成后,可以在需要的页面加一个Image控件,然后把Image控件的URL设成验证码所在的页面进行引用,所返回的值将与Session里面存储的值作比较.

(嘿嘿,是不是很简单啊,如果有错大家别拿拖鞋砸我哈)


TOP

楼主图片有问题!
每个人都有自己的优点,成功的人扬长避短,失败的人"不识庐山真面目,只缘生在此山中"!

TOP

回复 2# 的帖子

什么问题,显示不出来?

TOP

防盗链很成功~

TOP

是啊。你直接把别人空间图片拿来了。显示不了
每个人都有自己的优点,成功的人扬长避短,失败的人"不识庐山真面目,只缘生在此山中"!

TOP

呵呵,这是我直接在我的QQ空间粘贴下来的,反正运行一下就有结果了

TOP

没人顶我来顶~~~天天顶

TOP

回复 1# 的帖子

貌似用JAVASCRIPT写的
不怎么看的懂:002

TOP

顶............楼主好棒!

TOP

再发一帖,又有分,好过去抢,大家快点发帖啊,n_n

TOP

 14 12
发新话题