首页 > 编程语言 >asp.net如何生成图片验证码

asp.net如何生成图片验证码

时间:2023-12-06 14:32:39浏览次数:36  
标签:asp temp int image 验证码 new net aspx VNum

新建一个页面image.aspx,添加命名空间:


using System.Drawing.Imaging;

using System.IO;


然后在Page_load事件拷入如下代码:


  string tmp = RndNum(4);

  HttpCookie a = new HttpCookie("ImageV",tmp);  

  Response.Cookies.Add(a);

  this.ValidateCode(tmp);


接下来向该页面添加两个方法:


private void ValidateCode(string VNum)

 {

  Bitmap Img=null;

  Graphics g=null;

  MemoryStream ms=null;

  int gheight=VNum.Length*12;

  Img=new Bitmap(gheight,25);

  g=Graphics.FromImage(Img);

  //背景颜色

  g.Clear(Color.White);

  //文字字体

  Font f=new Font("Arial Black",10);

  //文字颜色

  SolidBrush s=new SolidBrush(Color.Black);

  g.DrawString(VNum,f,s,3,3);

  ms=new MemoryStream();

  Img.Save(ms,ImageFormat.Jpeg);

  Response.ClearContent();

  Response.ContentType="image/Jpeg";

  Response.BinaryWrite(ms.ToArray());

 

  g.Dispose();

  Img.Dispose();

  Response.End();

 }


 private string RndNum(int VcodeNum)

 {

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

   ",q,r,s,t,u,v,w,x,y,z";

  string[] VcArray=Vchar.Split(new Char [] {','});

  string VNum="";

  int temp=-1;


  Random rand=new Random();

 

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

  {

   if(temp!=-1)

   {

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

   }

 

   int t=rand.Next(35);

   if(temp!=-1&&temp==t)

   {

    return RndNum(VcodeNum);

   }

   temp=t;

   VNum+=VcArray[t];

  }

  return VNum;

 }


如果要在页面a.aspx生成验证码,则在该页面添加一个图片控件,假设命名为:ImageButton1,然后在page_Load事件中写如下代码:


ImageButton1.ImageUrl = "image.aspx";


这样就可以生成验证码了,image.aspx页面可以随便放在哪里,不过要注意ImageButton1.ImageUrl 要写对,同级可以直接写image.aspx,上一级写../image.aspx,很方便吧。


标签:asp,temp,int,image,验证码,new,net,aspx,VNum
From: https://blog.51cto.com/u_14682436/8704692

相关文章

  • .NET 6 使用Nlog 记录日志到本地并写入SQLserver数据库
    1.安装Nlog对应Nuget包版本NLog:5.0.4NLog.Database:5.0.4NLog.Web.AspNetCore:5.1.4Microsoft.Data.SqlClient:5.0.0(写入SQLServer数据库用的)2.建表SQLCREATETABLE[dbo].[NLog]( [Id][bigint]IDENTITY(1,1)NOTNULL, [Application][nvarchar](50)NOTNULL, [Lo......
  • 基于DotNetty实现自动发布 - 项目的配置与发现
    前言上一篇,我们实现了基于DotNetty的通信基础模块的搭建,本篇,主要实现待发布Web项目的集成。创建待发布项目为了测试,我创建了一个基于.NET4.8的Web项目OpenDeploy.TestWebProject我本机的代码仓储路径是:D:\Projects\Back\dotnet\Study\OpenDeploy.TestW......
  • 记一次 .NET 某零售管理系统 存储不足分析
    一:背景1.讲故事前几天有位朋友找到我,说他的程序会偶发性的报存储空间不足,无法处理此命令的错误,让我帮忙看下到底怎么回事,哈哈,人家是有备而来,dump都准备好了,话不多说,直接分析开干。二:WinDbg分析1.捕获dump中的异常一般来讲别人说的只是一个参考,我们需要自己到dump中去验......
  • Kali Linux 2023.4 发布 (Cloud ARM64, Vagrant Hyper-V & Raspberry Pi 5)
    KaliLinux2023.4发布(CloudARM64,VagrantHyper-V&RaspberryPi5)请访问原文链接:https://sysin.org/blog/kali-linux-2023/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org更新说明今天(2023-12-05),KaliLinux2023.4镜像下载已经可用,但是发行说明未知,官方......
  • .NET 轻量级工作流引擎
    title:.NET轻量级工作流引擎updated:2023-09-1507:58:10Zcreated:2023-09-1507:58:10Zsource:https://mp.weixin.qq.com/s/Q3B8tUwqosNLcX6_5_Ka3Qtags:-dotnetframework.NET轻量级工作流引擎欢迎来到Dotnet工具箱!在这里,你可以发现各种令人惊喜的开源项。......
  • KubeKey 升级 KubeSphere 和 Kubernetes 补丁版本实战指南
    作者:运维有术前言知识点定级:入门级KubeKey如何升级KubeSphere补丁版本KubeKey如何升级Kubernetes补丁版本KubeSphere和Kubernetes升级准备及验证KubeKey升级KubeSphere和Kubernetes的常见问题实战服务器配置(架构1:1复刻小规模生产环境,配置略有不同)......
  • NET Core 3.1 MVC 在html中引用js的方法使用时不生效异常
    在html的select元素添加了onchange事件,changeContent方法也在当前html下。<selectid="changeLanguage"class="form-controlinput-lg"asp-for="language"asp-items="Model.supportedLanguages"onchange="changeContent()">&l......
  • 使用阿里云服务器部署.net 6 mvc 程序(使用域名)
    1.创建Web程序打开vs2022,选择ASP.NETCoreWeb应用(模型-视图-控制器)创建项目。修改Program.cspublicstaticvoidMain(string[]args){varbuilder=WebApplication.CreateBuilder(args);//Addservicestothecontainer.builder.Services.AddControllers......
  • .net下优秀的日志框架Serilog,你用上了吗?强烈推荐
     在.NET开发中,Serilog是一款广受欢迎的日志库,它提供了强大的日志记录功能,具有丰富的特性和高度的可扩展性。Serilog的优秀之处包括:可扩展性:Serilog可以轻松扩展以满足不同的日志记录需求,例如日志存储、格式化和过滤。它支持各种插件和自定义扩展,让你可以根据项目的具......
  • pointnet cfd训练
    1#####Point-clouddeeplearningforpredictionoffluidflowfieldsonirregulargeometries(supervisedlearning)#####9importos#提供与操作系统交互的功能,例如文件和目录操作。10importlinecache#提供从文件中读取特定行的方法。11importmath......