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());                        
  • 相关阅读:
    Android导入自定义的jar包时出现 E/AndroidRuntime(486): java.lang.NoClassDefFoundError错误
    cocos2d-x认识之旅
    ASP.Net MVC Filter验证用户登录
    RHEL6安装调试过程中遇到的问题集
    java8新增特性(二)----函数式接口(Functional)
    京东云、新浪微博等专家畅谈Docker未来格局:开放与竞争(上)
    Activity启动模式的深入分析
    ShopEx 中规格属性添加时,自己主动计算其相应的销售价格,同一时候注意模板中的变量间的计算
    【天气APP】之桌面时钟witget组件
    xcode6.3 模版位置
  • 原文地址:https://www.cnblogs.com/wequst/p/1661614.html
Copyright © 2011-2022 走看看