首  页
站长信箱
868搜索
网站登录
免费计数器
免费留言本
IP来源查询
网站技术教程
网站流量统计
文章探索:   分类:    关键字:  
    什么?你还在找兼职?上兼客吧,现在兼客吧平台太火了,知名度和诚信度也很高,注册就送0.5元现金,满3元就能提现,马上到账了!最低3元就能提现,大家可以注册下试试!注册地址:http://www.jiankeba.com/computeryc1688
  + 栏目导航
  + 相关文章
从类型"DBNull"到类型"String"..
ASP.NET 与 Ajax 的实现方式
在asp.net 2.0中使用存储过程
Asp.net(C#)实现验证码功能
asp.net中读取和更新xml文件
ASP.NET编程中url编码的转换
Asp.net把UTF-8编码转换为GB231..
如何用vb.net获取网页源代码2
如何用vb.net获取网页源代码
VB.Net中关于数组赋值
Imports 语句
Imports 语句分析
VB.NET入门--Imports 语句
asp.net连接Access数据库
Asp.net如何连接Access数据库
ASP.NET技巧:access下的分页方..
ASP.net的ACCESS数据分页方案
ASP.NET与ACCESS结合建设网站的..
编译asp.net文件为dll文件
ASP.NET的错误处理机制
ASP.NET 2.0编程小技巧两则
ASP.NET 2.0发送电子邮件全面剖..
ASP.NET 2.0中发送电子邮件剖析..
如何充分利用ASP.NET 2.0预编译
如何改变asp.net项目名称
轻松加密ASP.NET 2.0 Web程序配..
Visual Studio.NET常见问题解答
ASP.Net中将图片数据保存到XML..
ASP.NET中随机数的产生
提高ASP.Net应用程序性能的十大..

技术教程 -> ASP.NET教程 ->  
Asp.net(C#)实现验证码功能
来源:http://tech.163.com   人气:2971   录入时间:2008/12/29


    
   新建一个专门用来创建验证码图片的页面ValidateCode.aspx
   它的后台cs文件代码如下:
   PageLoad
   
   private void Page_Load(object sender, System.EventArgs e)
    {
    string checkCode = CreateRandomCode(4);
    Session["CheckCode"] = checkCode;
    CreateImage(checkCode);
    }
   
   其中CreateRandomCode是自定义的函数,参数代表验证码位数
   
   private string CreateRandomCode(int codeCount)
    {
    string allChar = "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,W,X,Y,Z" ;
    string[] allCharArray = allChar.Split(',');
    string randomCode = "";
    int temp = -1;
   
    Random rand = new Random();
    for(int i = 0; i < codeCount; i++)
    {
    if(temp != -1)
    {
    rand = new Random(i*temp*((int)DateTime.Now.Ticks));
    }
    int t = rand.Next(35);
    if(temp == t)
    {
    return CreateRandomCode(codeCount);
    }
    temp = t;
    randomCode += allCharArray[t];
    }
    return randomCode;
    }
   CreateImage也是一个自定义的函数,用于生成图
   
   private void CreateImage(string checkCode)
    {
    int iwidth = (int)(checkCode.Length * 11.5);
    System.Drawing.Bitmap image = new System.Drawing.Bitmap(iwidth, 20);
    Graphics g = Graphics.FromImage(image);
    Font f = new System.Drawing.Font("Arial", 10, System.Drawing.FontStyle.Bold);
    Brush b = new System.Drawing.SolidBrush(Color.White);
    //g.FillRectangle(new System.Drawing.SolidBrush(Color.Blue),0,0,image.Width, image.Height);
    g.Clear(Color.Blue);
    g.DrawString(checkCode, f, b, 3, 3);
   
    Pen blackPen = new Pen(Color.Black, 0);
    Random rand = new Random();
    for (int i=0;i<5;i++)
    {
    int y = rand.Next(image.Height);
    g.DrawLine(blackPen,0,y,image.Width,y);
    }
   
    System.IO.MemoryStream ms = new System.IO.MemoryStream();
    image.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);
    Response.ClearContent();
    Response.ContentType = "image/Jpeg";
    Response.BinaryWrite(ms.ToArray());
    g.Dispose();
    image.Dispose();
    }
   //g.FillRectangle(new System.Drawing.SolidBrush(Color.Blue),0,0,image.Width, image.Height);
   g.Clear(Color.Blue);
   这两种方法都可以改变生成图片的背景颜色
   下面那个for循环用来生成一些随机的水平线
   
   在需要用到验证码的页面添加一个<asp:Image>控件即可,但是要把ImageUrl指向生成验证码的页面
   
   <asp:Image Runat="server" ID="ImageCheck" ImageUrl="ValidateCode.aspx"></asp:Image>
   



| 网站转让 | 站长信箱 | 网站登录 | 技术教程 | 免费计数器 | 免费留言本 | 868流量统计 | 好帮手网站营销 |
地址:广东省阳江市  联系电话:13725641179 杨先生
Copyright 2004-2019 868资源网- 版权所有    粤ICP备05007330号