zoukankan      html  css  js  c++  java
  • C# 生成验证码 方法一

    注意命名空间的引用

    在项目中新建Validcode.aspx

    <%@ Page Language="C#" AutoEventWireup="true" EnableViewState="false"%>
    
    <%@ Import Namespace="System.Drawing" %>
    
    <%@ Import Namespace="System.Drawing.Drawing2D" %>
    
    <%@ Import Namespace="System.Drawing.Imaging" %>
    
    <%@ Import Namespace="System.IO" %>
    
    <%@ Import Namespace="System.Text" %>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    
    <head id="Head1" runat="server">
    
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>验证码</title>
    
        <!--禁止浏览器从本地缓存中调阅页面-->
    
        <meta http-equiv="pragram" content="no-cache" />
    
        <!--必须重新加载页面-->
    
        <meta http-equiv="cache-control" content="no-cache, must-revalidate" />
    
        <!--网页在缓存中的过期时间-->
    
        <meta http-equiv="expires" content="-1" />
    
     
    
        <script type="text/C#" runat="server">
    
            /*
    
             * 使用方法
    
             * <img id="imgValidateCode" border="1" src="ValidateCode.aspx" style="cursor:hand" onclick="this.src='ValidateCode.aspx?'+Math.random()" title="点击更换验证码" />
    
             */
    
            static readonly char[] codeList = new char[]{'0','1','2','3','4','5','6','7','8','9'};
    
     
    
            string sessionKey = "ValidateCode";//保存在Session中所用的KEY
    
            int codeLength = 4;                //验证码字符长度  
    
            int width = 64;                   //验证码图片宽度
    
            int height = 20;                   //验证码图片高度
    
            int fontSize = 13;                 //验证码字体大小
    
     
    
            protected void Page_Load(object sender, EventArgs e)
    
            {
    
                //获取验证码字符串
    
                string strCode = GetValidateCode();
    
     
    
                //将验证码字符串保存到Session中
    
                Session[sessionKey] = strCode;
    
     
    
                //实例化图片
    
                using (Bitmap img = new Bitmap(width, height))
    
                {
    
                    //获取画板
    
                    using (Graphics g = Graphics.FromImage(img))
    
                    {
    
                        //填充底纹
    
    //                    g.FillRectangle(new HatchBrush(HatchStyle.Horizontal, Color.LightYellow, Color.LightSkyBlue), 0, 0, width, height);
                        g.Clear(Color.LightCyan);
    
                        Random rand = new Random();
                        for (int i = 0; i < 150; i++)
                        {
                            int x = rand.Next(img.Width);
                            int y = rand.Next(img.Height);
                            g.DrawPie(new Pen(Color.LightGray, 0f), x, y, 4, 4, 1, 1);
                        } 
    
                        //绘制验证码
    
                        using (Font font = new Font("Rockwell", fontSize, FontStyle.Bold | FontStyle.Italic))
    
                        {
    
                            g.DrawString(strCode, font, new LinearGradientBrush(new Point(0, 0), new Point(0, 5), Color.Blue, Color.Chocolate), (width - font.SizeInPoints * codeLength) / 2, (height - font.SizeInPoints) / 3);
    
                        }
    
                        using (MemoryStream mStream = new MemoryStream())
    
                        {
    
                            //将图片存入内存中
    
                            img.Save(mStream, ImageFormat.Gif);
    
     
    
                            //将图片输出至页面
    
                            Response.ClearContent();
    
                            Response.ContentType = "image/gif";
    
                            Response.BinaryWrite(mStream.ToArray());
    
                        }
    
                    }
    
                }
    
                Response.End();
    
            }
    
     
    
     
    
            //生成验证码
    
            public string GetValidateCode()
    
            {
    
                Random rand = new Random();
    
                StringBuilder strBuilder = new StringBuilder(codeLength);
    
                for (int i = 0; i < codeLength; i++)
    
                {
    
                    strBuilder.Append(codeList[rand.Next(0, codeList.Length)]);
    
                }
    
                return strBuilder.ToString();
    
            }
    
        </script>
    
    </head>
    
    <body>
    
    </body>
    
    </html>

    客户端

    <form id="form1" runat="server">
        <ul>
        <li><asp:TextBox ID="txt_LoginName" runat="server"   class="loginuser" ></asp:TextBox></li>
        <li><asp:TextBox ID="txt_PassWord" runat="server" class="loginpwd"  TextMode ="Password"></asp:TextBox></li>
                  <li><label>验证码:</label><asp:TextBox ID="txt_CheckCode" runat="server" class="loginBox" style=" 100px;" type="text" CssClass="loginCode" size="20" maxlength="15"></asp:TextBox>
                  <img  align="absmiddle" id="Img1" style="cursor: pointer;"   src="Validcode.aspx?k=" alt="验证码" title="看不清,换张图片?" onclick="this.src+=Math.random();" /><label>点击图片刷新</label> </li>
    <li> 
    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
                                                ErrorMessage="请输入登录名" 
            ControlToValidate="txt_LoginName" Display="Dynamic" Width="74px"></asp:RequiredFieldValidator>
    
                                            <asp:CustomValidator ID="CustomValidator1" runat="server" 
                                                ControlToValidate="txt_LoginName" 
            Display="Dynamic" ErrorMessage="登录名不正确" 
                                                
            onservervalidate="CustomValidator1_ServerValidate" Width="72px"></asp:CustomValidator>
                                                
                                                
                                                                                        <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" 
                                                ErrorMessage="请输入密码" 
            ControlToValidate="txt_PassWord" Display="Dynamic" Width="62px"></asp:RequiredFieldValidator>
    
                                            <asp:CustomValidator ID="CustomValidator2" runat="server" 
                                                ControlToValidate="txt_PassWord" 
            Display="Dynamic" ErrorMessage="密码不正确" 
                                                
            onservervalidate="CustomValidator2_ServerValidate" Width="62px"></asp:CustomValidator>
                                                
                                                                                            <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" 
                                                    ErrorMessage="请输入验证码" 
            ControlToValidate="txt_CheckCode" Display="Dynamic" Width="73px" ></asp:RequiredFieldValidator>
    
                                                <asp:CustomValidator ID="CustomValidator3" runat="server" 
                                                    ControlToValidate="txt_CheckCode" 
                Display="Dynamic" ErrorMessage="验证码不正确" 
                                                    
                onservervalidate="CustomValidator3_ServerValidate" Width="73px"></asp:CustomValidator>
              </li>
        <li><asp:Button ID="Button1" runat="server" Text="登录" class="loginbtn" value="登录"  onclick="Button1_Click" /><label><input name="" type="checkbox" value="" checked="checked" />记住密码</label><label><a href="Reg.aspx">点此注册会员</a></label></li>
        </ul>
        
        </form>

    服务端

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data;
    using System.Web.Services;
    
    
    public partial class Manage_Login : System.Web.UI.Page
    {
    
        protected void Page_Load(object sender, EventArgs e)
        {
    
        }
    
    
        protected void Button1_Click(object sender, EventArgs e)
        {
            if (Page.IsValid)
            {
                string Password = txt_PassWord.Text.ToString().Trim().Replace("'", "''").Replace("=", "");
                string UserID = txt_LoginName.Text.ToString().Trim().Replace("'", "''").Replace("=", "");
                Password = func.md5(Password);
                string CheckCode = txt_CheckCode.Text.ToString().Trim();
                UserID = UserID.Replace("'", "''").Replace("=", "");
                string sql = "select * from DeviceUser where LoginName='" + UserID + "' and IsChecked = 1 ";
                DataTable dt = new DataTable();
                dt = db.GreatDs(sql).Tables[0];
    
                if (dt.Rows.Count > 0)
                {
                    string pw1 = dt.Rows[0]["Password"].ToString();
                    if (Password == dt.Rows[0]["Password"].ToString())
                    {
                        string ID = dt.Rows[0]["ID"].ToString();
                         DateTime datetime = DateTime.Now;//定义时间对象
                        HttpCookie DeviceUserIDcookie = System.Web.HttpContext.Current.Response.Cookies["DeviceUserID"];
                        DeviceUserIDcookie.Values.Add("ID",dt.Rows[0]["ID"].ToString().Trim()) ;
                        DeviceUserIDcookie.Values.Add("LoginTime", datetime.ToString());
                        TimeSpan ts = new TimeSpan(1, 0, 0, 0);//cookie有效作用时间,具体查msdn
                        DeviceUserIDcookie.Expires = datetime.Add(ts);//添加作用时间
    
                        System.Web.HttpContext.Current.Response.AppendCookie(DeviceUserIDcookie);//确定写入cookie中
                        
                        Response.Redirect("index.aspx");
                    }
                }
            }
        }
        protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
        {
    
    
            string LoginName = txt_LoginName.Text.ToString().Trim().Replace("'", "''").Replace("=", "");
            LoginName = LoginName.Replace("'", "''").Replace("=", "");
            string sql = "select count(id) from DeviceUser  where LoginName='" + LoginName + "'  and IsChecked = 1 ";
            int Count = int.Parse(db.ExeSQLs(sql));
            if (Count == 0)
            {
                args.IsValid = false;
            }
            else
            {
                args.IsValid = true;
    
            }
    
    
        }
        protected void CustomValidator2_ServerValidate(object source, ServerValidateEventArgs args)
        {
            string Password = txt_PassWord.Text.ToString().Trim().Replace("'", "''").Replace("=", "");
            string LoginName = txt_LoginName.Text.ToString().Trim().Replace("'", "''").Replace("=", "");
            Password = func.md5(Password);
            string CheckCode = txt_CheckCode.Text.ToString().Trim();
    
    
    
    
            LoginName = LoginName.Replace("'", "''").Replace("=", "");
            string sql = "select * from DeviceUser   where LoginName='" + LoginName + "'  ";
            DataTable dt = new DataTable();
            dt = db.GreatDs(sql).Tables[0];
            if (dt.Rows.Count > 0)
            {
                string pw1 = dt.Rows[0]["Password"].ToString();
                if (Password == pw1)
                {
                    args.IsValid = true;
    
                }
                else
                {
                    args.IsValid = false;
                }
            }
            else
            {
                args.IsValid = true;
            }
    
        }
        protected void CustomValidator3_ServerValidate(object source, ServerValidateEventArgs args)
        {
            if (args.Value != "")
            {
                string CheckCode = args.Value;
                string ValidateCodeSession = "";
                if (Session["ValidateCode"] != null)
                {
                    ValidateCodeSession = Session["ValidateCode"].ToString();
                } 
                
                if (CheckCode == ValidateCodeSession)
                {
                    args.IsValid = true;
    
                }
                else
                {
                    args.IsValid = false;
    
                }
            }
        }
    
    
    }
  • 相关阅读:
    Java 简单算法--打印乘法口诀(只使用一次循环)
    Java简单算法--求100以内素数
    ubuntu 16.04 chrome flash player 过期
    java 网络API访问 web 站点
    java scoket (UDP通信模型)简易聊天室
    leetcode1105 Filling Bookcase Shelves
    leetcode1140 Stone Game II
    leetcode1186 Maximum Subarray Sum with One Deletion
    leetcode31 Next Permutation
    leetcode834 Sum of Distances in Tree
  • 原文地址:https://www.cnblogs.com/mobobo/p/5630284.html
Copyright © 2011-2022 走看看