zoukankan      html  css  js  c++  java
  • asp.net验证码

    先建立一个asp.net页面ValidateCode.aspx

    不写任何东西 :

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="VerifyCode.aspx.cs" Inherits="RRBManage.VerifyCode" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <title></title>
    </head>
    <body>
    <form id="form1" runat="server">
    <div>

    </div>
    </form>
    </body>
    </html>

    在页面的后台ValidateCode.cs文件写一下代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Drawing;
    using System.Drawing.Imaging;

    namespace RRBManage
    {
    public partial class VerifyCode : System.Web.UI.Page
    {
    static string[] FontItems = new string[] { "Arial", "隶书","华文行楷","Helvetica", "宋体","楷书","篆书","燕书","黑体","行书","仿宋",
    "Geneva",
    "sans-serif",
    "Verdana"
    };
    static Brush[] BrushItems = new Brush[] { Brushes.OliveDrab,
    Brushes.ForestGreen,
    Brushes.DarkCyan,
    Brushes.LightSlateGray,
    Brushes.RoyalBlue,
    Brushes.SlateBlue,
    Brushes.DarkViolet,
    Brushes.MediumVioletRed,
    Brushes.IndianRed,
    Brushes.Firebrick,
    Brushes.Chocolate,
    Brushes.Peru,
    Brushes.Goldenrod
    };
    static string[] BrushName = new string[] { "OliveDrab",
    "ForestGreen",
    "DarkCyan",
    "LightSlateGray",
    "RoyalBlue",
    "SlateBlue",
    "DarkViolet",
    "MediumVioletRed",
    "IndianRed",
    "Firebrick",
    "Chocolate",
    "Peru",
    "Goldenrod"
    };
    private static Color BackColor = Color.White;
    private static Pen BorderColor = Pens.DarkGray;
    private static int Width = 52;
    private static int Height = 21;
    private Random _random;
    private string _code;
    private int _brushNameIndex;
    override protected void OnInit(EventArgs e)
    {

    //CODEGEN: This call is required by the ASP.NET Web Form Designer.

    //InitializeComponent();
    //base.OnInit(e);
    }
    /**/
    /**/
    /**/
    /// <summary>
    /// Required method for Designer support - do not modify
    /// the contents of this method with the code editor.
    /// </summary>
    private void InitializeComponent()
    {
    //this.Load += new System.EventHandler(this.Page_Load);
    }
    /**/
    /// <summary>
    ///
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    public void Page_Load(object sender, System.EventArgs e)
    {
    if (!IsPostBack)
    {
    //
    // TODO : initialize
    //
    this._random = new Random();
    this._code = GetRandomCode();
    //
    // TODO : use Session["code"] save the VerifyCode
    //
    // Session["code"] = this._code;
    HttpCookie cokie = new HttpCookie("RRBCode");
    cokie.Value = this._code;
    cokie.Expires = DateTime.Now.AddMinutes(10);
    HttpContext.Current.Response.Cookies.Add(cokie);
    //
    // TODO : output Image
    //
    this.SetPageNoCache();
    this.OnPaint();
    }
    }
    /**/
    /**/
    /**/
    /// <summary>
    /// 设置页面不被缓存
    /// </summary>
    private void SetPageNoCache()
    {
    Response.Buffer = true;
    Response.ExpiresAbsolute = System.DateTime.Now.AddSeconds(-1);
    Response.Expires = 0;
    Response.CacheControl = "no-cache";
    Response.AppendHeader("Pragma", "No-Cache");
    }
    /**/
    /**/
    /**/
    /// <summary>
    /// 取得一个 4 位的随机码
    /// </summary>
    /// <returns></returns>
    private string GetRandomCode()
    {
    return Guid.NewGuid().ToString().Substring(0, 4).Replace("0", "a");
    }
    /**/
    /**/
    /**/
    /// <summary>
    /// 随机取一个字体
    /// </summary>
    /// <returns></returns>
    private Font GetFont()
    {
    int fontIndex = _random.Next(0, FontItems.Length);
    FontStyle fontStyle = GetFontStyle(_random.Next(0, 60));
    return new Font(FontItems[fontIndex], 12, fontStyle);
    }
    /**/
    /**/
    /**/
    /// <summary>
    /// 取一个字体的样式
    /// </summary>
    /// <param name="index"></param>
    /// <returns></returns>
    private FontStyle GetFontStyle(int index)
    {
    switch (index)
    {
    case 0:
    return FontStyle.Bold;
    case 1:
    return FontStyle.Italic;
    default:
    return FontStyle.Regular;
    }
    }
    /**/
    /**/
    /**/
    /// <summary>
    /// 随机取一个笔刷
    /// </summary>
    /// <returns></returns>
    private Brush GetBrush()
    {
    int brushIndex = _random.Next(0, BrushItems.Length);
    _brushNameIndex = brushIndex;
    return BrushItems[brushIndex];
    }
    /**/
    /**/
    /**/
    /// <summary>
    /// 绘画事件
    /// </summary>
    private void OnPaint()
    {
    Bitmap objBitmap = null;
    Graphics g = null;
    try
    {
    objBitmap = new Bitmap(Width, Height);
    g = Graphics.FromImage(objBitmap);
    Paint_Background(g);
    Paint_Text(g);
    // Paint_TextStain(objBitmap);
    Paint_Border(g);
    Paint_TextStain(objBitmap);
    objBitmap.Save(Response.OutputStream, ImageFormat.Gif);
    Response.ContentType = "image/gif";
    }
    catch { }
    finally
    {
    if (null != objBitmap)
    objBitmap.Dispose();
    if (null != g)
    g.Dispose();
    }
    }
    /**/
    /**/
    /**/
    /// <summary>
    /// 绘画背景颜色
    /// </summary>
    /// <param name="g"></param>
    private void Paint_Background(Graphics g)
    {
    g.Clear(BackColor);
    }
    /**/
    /**/
    /**/
    /// <summary>
    /// 绘画边框
    /// </summary>
    /// <param name="g"></param>
    private void Paint_Border(Graphics g)
    {
    g.DrawRectangle(BorderColor, 0, 0, Width - 1, Height - 1);

    }
    /**/
    /**/
    /**/
    /// <summary>
    /// 绘画文字
    /// </summary>
    /// <param name="g"></param>
    private void Paint_Text(Graphics g)
    {
    g.DrawString(_code, GetFont(), GetBrush(), 3, 1);
    }
    /**/
    /**/
    /**/
    /// <summary>
    /// 绘画文字噪音点
    /// </summary>
    /// <param name="g"></param>
    private void Paint_TextStain(Bitmap b)
    {
    for (int n = 0; n < 30; n++)
    {
    int x = _random.Next(Width);
    int y = _random.Next(Height);
    b.SetPixel(x, y, Color.FromName(BrushName[_brushNameIndex]));
    }
    }
    }
    }

    要调用该验证码的页面login.asp写代码如下:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="login.aspx.cs" Inherits="RRBManage.login" %>

    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>人人保后台登录</title>
    <link href="css/admin.css" type="text/css" rel="stylesheet">
    </head>
    <script src="http://localhost:57692/js/jquery.js"></script>
    <script type="text/javascript">
    //添加管理员验证
    function checkAdminLoginInput() {
    var name = document.getElementById("txtUserName").value;
    var pass = document.getElementById("txtPassWord").value;
    var Yzm = document.getElementById("txtYzm").value;
    if (name.length == 0 || pass.length < 6 || Yzm.length == 0) {
    alert('各项不能为空!');
    return false;
    }
    }
    function changeImage() {
    //单击触发图片重载事件,完成图片验证码的更换
    document.getElementById("imgRandom").src = document.getElementById("imgRandom").src + '?';
    }

    </script>
    <body>
    <div class="dengl">
    <form id="form1" runat="server">

    <div class="dltiao">
    <div class="dltiao1">
    <img src="images/log1_03.jpg" />
    </div>
    <div class="dltiao2">
    <p>人人保后台系统</p>
    <b>THE BACKGROUND SYSTEM </b>
    </div>
    </div>
    <div class="dlkuang">
    <div class="dlkuang1">LOGIN</div>
    <div class="dlkuang2">
    <span>账&nbsp;&nbsp;&nbsp;&nbsp;号</span>
    <asp:TextBox ID="txtUserName" runat="server" TabIndex="1" Width="230"></asp:TextBox>
    </div>
    <div class="dlkuang3">
    <span>密&nbsp;&nbsp;&nbsp;&nbsp;码</span>
    <asp:TextBox ID="txtPassWord" runat="server" TextMode="Password" Width="230"></asp:TextBox>
    </div>
    <div class="dlkuang4" >
    <span>验证码</span>
    <asp:TextBox ID="txtYzm" runat="server" CssClass="yz" Width="132" ></asp:TextBox><img class="l_yzm"
    src="/VerifyCode.aspx" height="36" width="97" id="imgRandom" onclick="changeImage()" />
    <p class="dl_an">
    </div>
    <div class="dlkuang5">
    <span>
    <%=ViewState["errorInfo"] %></span>
    <asp:Button ID="Button1" runat="server" Text="立即登录" Width="230"
    OnClientClick="return checkAdminLoginInput()" OnClick="Button1_Click" />
    </div>
    </div>
    </form>
    </div>
    </body>
    </html>

     调用验证码的页面的后台login.csde 的代码如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using DAL;
    using Model;

    namespace RRBManage
    {

    protected void Button1_Click(object sender, EventArgs e)
    {
    string name = this.txtUserName.Text.Trim();
    string pass = this.txtPassWord.Text.Trim();
    string yzm = this.txtYzm.Text.Trim();
    HttpCookie cokie = Request.Cookies["RRBCode"];
    string code = cokie.Value;

    if(name.Length == 0 || pass.Length == 0||yzm.Length==0)
    {
    Jscript.Alert("各项不能为空");
    return ;
    }
    if (code.ToString()!= yzm)
    {
    ViewState["errorInfo"] = "验证码有误!";
    return;}

    else
    {
    Jscript.AlertAndRedirect("无此账号或已被停用,请联系超级管理员!",this.Request.RawUrl);
    }
    }

    }

  • 相关阅读:
    PHP 魔术函数
    创建静态链接库
    Linux C 子进程的调度
    Android开发(三) android布局
    谷歌(Google)算法面试题
    Android开发(二) 详细了解android开发
    制作makefile文件
    SHELL编程
    5 Rules For A Good Web Design
    非托管代码方法的命名约定
  • 原文地址:https://www.cnblogs.com/lk516924/p/4757042.html
Copyright © 2011-2022 走看看