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

在Asp.net(C#)中添加程序實現驗證碼功能

2013-11-13 10:16:16  來源: .NET編程 
    添加一個web窗體然後將下面的代碼添加進去並重命名該窗體為checkCodeaspx;
    public class ValidateCode : SystemWebUIPage
    {
    private void Page_Load(object sender SystemEventArgs e)
    {
    thisCreateCheckCodeImage(GenerateCheckCode())
    }
    #region Web 窗體設計器生成的代碼
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 該調用是 ASPNET Web 窗體設計器所必需的
    //
    InitializeComponent()
    baseOnInit(e)
    }
    /// <summary>
    /// 設計器支持所需的方法 不要使用代碼編輯器修改
    /// 此方法的內容
    /// </summary>
    private void InitializeComponent()
    {
    thisLoad += new SystemEventHandler(thisPage_Load)
    }
    #endregion
    private string GenerateCheckCode()
    {
    int number;
    char code;
    string checkCode = StringEmpty;
    SystemRandom random = new Random()
    for(int i=; i<; i++)
    {
    number = randomNext()
    if(number % ==
    code = (char)( + (char)(number % ))
    else
    code = (char)(A + (char)(number % ))
    checkCode += codeToString()
    }
    ResponseCookiesAdd(new HttpCookie(CheckCode checkCode))
    return checkCode;
    }
    private void CreateCheckCodeImage(string checkCode)
    {
    if(checkCode == null || checkCodeTrim() == StringEmpty)
    return;
    SystemDrawingBitmap image = new SystemDrawingBitmap((int)MathCeiling((checkCodeLength * ))
    Graphics g = GraphicsFromImage(image)
    try
    {
    //生成隨機生成器
    Random random = new Random()
    //清空圖片背景色
    gClear(ColorWhite)
    //畫圖片的背景噪音線
    for(int i=; i<; i++)
    {
    int x = randomNext(imageWidth)
    int x = randomNext(imageWidth)
    int y = randomNext(imageHeight)
    int y = randomNext(imageHeight)
    gDrawLine(new Pen(ColorSilver) x y x y
    }


    Font font = new SystemDrawingFont(Arial (SystemDrawingFontStyleBold | SystemDrawingFontStyleItalic))
    SystemDrawingDrawingDLinearGradientBrush brush = new SystemDrawingDrawingDLinearGradientBrush(new Rectangle( imageWidth imageHeight) ColorBlue ColorDarkRed f true)
    gDrawString(checkCode font brush
    //畫圖片的前景噪音點
    for(int i=; i<; i++)
    {
    int x = randomNext(imageWidth)
    int y = randomNext(imageHeight)
    imageSetPixel(x y ColorFromArgb(randomNext()))
    }
    //畫圖片的邊框線
    gDrawRectangle(new Pen(ColorSilver) imageWidth imageHeight
    SystemIOMemoryStream ms = new SystemIOMemoryStream()
    imageSave(ms SystemDrawingImagingImageFormatGif)
    ResponseClearContent()
    ResponseContentType = image/Gif;
    ResponseBinaryWrite(msToArray())
    }
    finally
    {
    gDispose()
    imageDispose()
    }
    }
    }
    在你要顯示驗證碼的窗體中添加一個image控件並命名為imgCheckCode用於顯示驗證碼再添加一個lable並命名為lblMessage用於顯示錯誤信息然後在該窗體的Page_Load中添加thisimgCheckCode ImageUrl =checkCodeaspx;
    在登錄頁面的登錄按鈕的處理事件中使用以下代碼判斷驗證碼
    private void btnLogin_Click(object sender SystemWebUIImageClickEventArgs e)
    {
    if(RequestCookies[checkCode] == null)
    {
    lblMessageText = 您的浏覽器設置已被禁用 Cookies您必須設置浏覽器允許使用 Cookies 選項後才能使用本系統;
    lblMessageVisible = true;
    return;
    }
    if(StringCompare(RequestCookies[checkCode]Value txtCheckCodeText true) !=
    {
    lblMessageText = 驗證碼錯誤請輸入正確的驗證碼;
    lblMessageVisible = true;
    return;
    }
    }
    這樣就能實現你所要的驗證碼驗證了


From:http://tw.wingwit.com/Article/program/net/201311/13119.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.