熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

Asp.net(C#)實現驗證碼功能兩法

2013-11-13 10:21:16  來源: .NET編程 
    新建一個專門用來創建驗證碼圖片的頁面ValidateCodeaspx
   
    它的後台cs文件代碼如下
   
    PageLoad
   
    private void Page_Load(object sender SystemEventArgs e)
   
    {
   
    string checkCode = CreateRandomCode(
   
    Session[CheckCode] = checkCode;
   
    CreateImage(checkCode)
   
    }
   
    其中CreateRandomCode是自定義的函數參數代表驗證碼位數
   
    private string CreateRandomCode(int codeCount)
   
    {
   
    string allChar = ABCDEFGHIJKLMNOPQRSTUWXYZ ;
   
    string[] allCharArray = allCharSplit(
   
    string randomCode = ;
   
    int temp = ;
   
    Random rand = new Random()
   
    for(int i = ; i < codeCount; i++)
   
    {
   
    if(temp !=
   
    {
   
    rand = new Random(i*temp*((int)DateTimeNowTicks))
   
    }
   
    int t = randNext(
   
    if(temp == t)
   
    {
   
    return CreateRandomCode(codeCount)
   
    }
   
    temp = t;
   
    randomCode += allCharArray[t];
   
    }
   
    return randomCode;
   
    }
   
    CreateImage也是一個自定義的函數用於生成圖
   
    private void CreateImage(string checkCode)
   
    {
   
    int iwidth = (int)(checkCodeLength *
   
    SystemDrawingBitmap image = new SystemDrawingBitmap(iwidth
   
    Graphics g = GraphicsFromImage(image)
   
    Font f = new SystemDrawingFont(Arial SystemDrawingFontStyleBold)
   
    Brush b = new SystemDrawingSolidBrush(ColorWhite)
   
    //gFillRectangle(new SystemDrawingSolidBrush(ColorBlue)imageWidth imageHeight)
   
    gClear(ColorBlue)
   
    gDrawString(checkCode f b
   
    Pen blackPen = new Pen(ColorBlack
   
    Random rand = new Random()
   
    for (int i=;i<;i++)
   
    {
   
    int y = randNext(imageHeight)
   
    gDrawLine(blackPenyimageWidthy)
   
    }
   
    SystemIOMemoryStream ms = new SystemIOMemoryStream()
   
    imageSave(msSystemDrawingImagingImageFormatJpeg)
   
    ResponseClearContent()
   
    ResponseContentType = image/Jpeg;
   
    ResponseBinaryWrite(msToArray())
   
    gDispose()
   
    imageDispose()
   
    }
   
    //gFillRectangle(new SystemDrawingSolidBrush(ColorBlue)imageWidth imageHeight)
   
    gClear(ColorBlue)
   
    這兩種方法都可以改變生成圖片的背景顏色
   
    下面那個for循環用來生成一些隨機的水平線
   
    在需要用到驗證碼的頁面添加一個<asp:Image>控件即可但是要把ImageUrl指向生成驗證碼的頁面
   
    <asp:Image Runat=server ID=ImageCheck ImageUrl=ValidateCodeaspx></asp:Image>
From:http://tw.wingwit.com/Article/program/net/201311/13349.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.