zoukankan      html  css  js  c++  java
  • 验证码实现的技术与方法

    说明:验证码的应用可以在一定程度上防止恶意注册,它的原理就是在一个单独的页面上首先左一张图片,

    然后在这个图片上添加数字,字母或者汉字

    应用

    第一步:在后台中生成背景图片

    int ImageWidth = 85;                            
    int ImageHeight = 33;                            
    Font font 
    = new Font("Arial"19, FontStyle.Bold);//定义字体                            
    Brush brush=new SolidBrush(Color.Black);//定义工具                            
    Bitmap bitmap= new Bitmap(ImageWidth,ImageHeight);//定义画板                            
    Graphics graphics = Graphics.FromImage(bitmap);//在定义的画板上绘图                            
    graphics.Clear(ColorTranslator.FromHtml("#d9e8b7"));//填充背景颜色                            
    RectangleF rect = new RectangleF(5,2,ImageWidth,ImageHeight);//定义个绘图形状                            
    Pen pen1 = new Pen(Color.Blue);//定义钢笔 绘制干扰线                            
    Pen pen2 = new Pen(Color.DarkGreen);//定义钢笔 绘制干扰线                            
    Random rand = new Random();                            
    for (int i = 0;i<2;i++)//绘制两条横向干扰线                            
    {                            
        Point p1
    =new Point(0,rand.Next(ImageWidth));                        
        Point p2
    =new Point(ImageWidth,rand.Next(ImageWidth));                        
        graphics.DrawLine(pen1,p1,p2);                        
    }                            
    for (int i=0;i<2;i++)//绘制两条纵向干扰线                            
    {                            
        Point p1 
    = new Point(0,rand.Next(ImageHeight));                        
        Point p2 
    = new Point(ImageHeight,rand.Next(ImageHeight));                        
        graphics.DrawLine(pen2,p1,p2);                        
    }                            
    graphics.DrawString(CheckRandomCode(),font,brush,rect);
    //绘制验证码文字                            
    bitmap.Save(Response.OutputStream,ImageFormat.Gif);//保存为gif格式的图片                            
    graphics.Dispose();                            
    bitmap.Dispose();                            

    第二步:在后台中生成字符库,随机取出4个

    public string CheckRandomCode()                        
    {                        
    Random rom 
    = new Random();                        
    char[] allcheckRandom ={'0','1','2','3','4','5','6','7','8','9',                        
       
    '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','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'};                        
    string Randomcode = "";                        
    for (int i = 0; i < 4;i++)                        
    {                        
    Randomcode 
    +=allcheckRandom[rom.Next(allcheckRandom.Length)];                        
    Session[
    "verty"= Randomcode;                        
    }                        
    Session[
    "CheckCode"= Randomcode;                        
    return Randomcode;                          
    }                        
    第三步:在前台中显示(显示的其实是一个图片)
    其中checkCode.aspx就是一个页面                
    <IMG id="Img1" src="../login/checkCode.aspx">                

    第四步:"换下一张"的功能实现(确切地说为局部刷新)

    在JS中:其中Img1为ID                        
                            
    onclick
    ="Img1.src='../login/checkCode.aspx?'+Math.random()"                        
                            
    在JQUERY中:                        
                            
     $(
    "#Img1").attr("src","../login/checkCode.aspx?"+Math.random());                        
  • 相关阅读:
    Octet string 解析
    c#之process类相关整理
    C# Process.Start()方法详解(转)
    c语言字符串比较函数strcmp
    C# 启动EXE文件及带启动参数EXE
    C语言中两个相等的char值比较 结果为false
    C语言strcmp()函数:比较字符串(区分大小写)
    char数组与char指针
    (转)在.net中序列化读写xml方法的总结
    PHP实现站点pv,uv统计(三)
  • 原文地址:https://www.cnblogs.com/wequst/p/1661614.html
Copyright © 2011-2022 走看看