栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > asp

asp.net登录验证码实现方法

asp 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

asp.net登录验证码实现方法

前端添加的标签和方法:
验证码:复制代码 代码如下:   点击图片刷新

//标签

$(function () {
      $("#imgValidateCode").click(function () {
 DoFresh();
      });
      DoFresh();
    })
function DoFresh() {
      var img = $("#imgValidateCode");
      img.attr("src", "VerifyCode.aspx?random=" + Math.random());

    } //添加的方法,src是生成图片的aspx的地址 

然后在项目中在新建一个VerifyCode.aspx,下面是aspx的代码:

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


 

   

 
 
   

 
  

接着是aspx.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;

 

namespace Form
{
  public partial class VerifyCode : System.Web.UI.Page
  {
    public static string HZ;
    /// 
    /// 验证码的最大长度
    /// 
    public int MaxLength
    {
      get { return 10; }

    }
    /// 
    /// 验证码的最小长度
    /// 
    public int MinLength
    {
      get { return 1; }
    }
 
    protected void Page_Load(object sender, EventArgs e)
    {
      string[] str = CreatevalidateNumber(4);
      string strcode = string.Empty;
      for (int i = 0; i < str.Length; i++)
      {
      strcode += str[i];

      }
    CreateCheckCodeImage(str);
      HZ = strcode;
      Response.Write(HZ);
     //验证码存入session
      Session["ValidateCode"] = HZ;
    }

    /// 
    /// 生成验证码
    /// 
    /// 指定验证码的长度
    /// 验证码
    public string[] CreatevalidateNumber(int length)

    {
      string Vchar = "1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,p" +

      ",q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,P,Q" +
      ",R,S,T,U,V,W,X,Y,Z";

      string[] VcArray = Vchar.Split(new Char[] { ',' });//拆分成数组
string[] num = new string[length];

      int temp = -1;//记录上次随机数值,尽量避避免生产几个一样的随机数

     Random rand = new Random();

      //采用一个简单的算法以保证生成随机数的不同

      for (int i = 1; i < length + 1; i++)

      {

 if (temp != -1)

 {

   rand = new Random(i * temp * unchecked((int)DateTime.Now.Ticks));

 }
 int t = rand.Next(VcArray.Length-1);
 if (temp != -1 && temp == t)
 {
   return CreatevalidateNumber(length);

 

 }

 temp = t;
 num[i - 1] = VcArray[t];
 //num.SetValue(VcArray[t]);
 //VNum += VcArray[t];

      }
      return num;
    }

   private void CreateCheckCodeImage(string[] checkCode)
    {
      if (checkCode == null || checkCode.Length <= 0)
 return;
      System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 32.5)), 60);
      System.Drawing.Graphics g = Graphics.FromImage(image);
     try
      {
//生成随机生成器

 Random random = new Random();

//清空图片背景色

 g.Clear(Color.White);

//定义颜色

 Color[] c = { Color.Black, Color.Red, Color.DarkBlue, Color.Green, Color.Orange, Color.Brown, Color.DarkCyan, Color.Purple };

 //画图片的背景噪音线
 for (int i = 0; i < 25; i++)

 {
   int cindex = random.Next(7);
   int findex = random.Next(5);
   int x1 = random.Next(image.Width);
   int x2 = random.Next(image.Width);
   int y1 = random.Next(image.Height);
   int y2 = random.Next(image.Height);

   // g.DrawLine(new Pen(c[cindex]), x1, y1, x2, y2);
 }
 //定义字体
 string[] f = { "Verdana", "Microsoft Sans Serif", "Comic Sans MS", "Arial", "宋体" };

for (int k = 0; k <= checkCode.Length - 1; k++)
 {
   int cindex = random.Next(7);
   int findex = random.Next(5);
   Font drawFont = new Font(f[findex], 26, (System.Drawing.FontStyle.Bold));
   SolidBrush drawBrush = new SolidBrush(c[cindex]);
   float x = 5.0F;
   float y = 0.0F;
   float width = 42.0F;
   float height = 48.0F;
   int sjx = random.Next(10);
   int sjy = random.Next(image.Height - (int)height);

   RectangleF drawRect = new RectangleF(x + sjx + (k * 25), y + sjy, width, height);
   StringFormat drawFormat = new StringFormat();
   drawFormat.Alignment = StringAlignment.Center;
 g.DrawString(checkCode[k], drawFont, drawBrush, drawRect, drawFormat);
 }
 //画图片的前景噪音点
 for (int i = 0; i < 500; i++)
 {
   int x = random.Next(image.Width);
   int y = random.Next(image.Height); 

   image.SetPixel(x, y, Color.FromArgb(random.Next()));

 }

 int cindex1 = random.Next(7);

 //画图片的边框线

 g.DrawRectangle(new Pen(c[cindex1]), 0, 0, image.Width - 1, image.Height - 1);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
 image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
 Response.ClearContent();
 Response.ContentType = "image/Gif";
 Response.BinaryWrite(ms.ToArray());

      }

      finally

      {

 g.Dispose();

 image.Dispose();

      }

    }

  }

} 

于是!就可以生成验证码了,然后自己再把编写验证版的判断逻辑写好就可以啦!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/56040.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号