排名
1
文章
860
粉丝
112
评论
163
.net core自定义项目模板,创建自己的模板项目,使用命令行创建模板项目
尘叶心繁 : 可以可以讲真的我都想弄个模板
net core webapi post传递参数
庸人 :
确实坑哈,我也是下班好了好几次,发现后台传递对象是可以的,但...
.net webapi 返回需要的字段,忽略某些字段,修改字段名等
雨雨雨雨雨辰 : 已精
.net webapi 返回需要的字段,忽略某些字段,修改字段名等
雨雨雨雨雨辰 :
疯狂反射
百度编辑器自定义模板
庸人 : 我建议换个编辑器,因为现在百度富文本已经停止维护了,用tinymec...
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256


欢迎加群交流技术

就是一个很简单的计算式验证码:
其实这种验证码很简单,就是随机参数两个数字在随机一下计算的方法即可,代码如下:
public class NumberCheckHandler : IHttpHandler, IRequiresSessionState
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
//创建一个空的图片
Bitmap bitmap = new Bitmap(100, 40);
//根据图片创建一个画图的工具类
Graphics graphics = Graphics.FromImage(bitmap);
Font font = new Font("宋体", 15);
SolidBrush solidBrush = new SolidBrush(Color.White);
graphics.FillRectangle(new SolidBrush(Color.Black), 0, 0, 100, 36);
//随机,大小写,数字
List<int> codeList = new List<int>();
//大小写的范围
for (int i = 97, j = 65; i < 123; i++, j++)
{
codeList.Add(i);
codeList.Add(j);
}
//数字
for (int i = 48; i < 58; i++)
{
codeList.Add(i);
}
Random random = new Random();
int number1 = random.Next(1, 30);
int number2 = random.Next(1, 30);
//存放算式的键值对
Dictionary<int, string> dic = new Dictionary<int, string>();
dic.Add(1, "+");
dic.Add(2, "-");
dic.Add(3, "*");
//存放结果的键值对
Dictionary<int, int> dic_result = new Dictionary<int, int>();
dic_result.Add(1, number1 + number2);
dic_result.Add(2, number1 - number2);
dic_result.Add(3, number1 * number2);
//随机取一种算法
int type = random.Next(1, 4);
//计算式
string cal = number1 + dic[type] + number2 + "=?";
//把图片验证码的结果存储在session,为了方便进行和用户输入内容匹配
context.Session["code"] = dic_result[type];
graphics.DrawString(cal, font, solidBrush, 25, 8);
Pen pen = new Pen(solidBrush, 1);
//产生干扰-三条直线
//for (int i = 0; i < 4; i++)
//{
// graphics.DrawLine(pen, random.Next(0, 100), random.Next(0, 36), random.Next(0, 100), random.Next(0, 36));
//}
////产生干扰-生成更小的随机内容
//for (int i = 0; i < 8; i++)
//{
// int ranIndex = random.Next(0, codeList.Count);
// char rchar = (char)codeList[ranIndex];
// graphics.DrawString(rchar + "", new Font("宋体", 8), solidBrush, random.Next(0, 100), random.Next(0, 36));
//}
//输出图片
bitmap.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
}
public bool IsReusable
{
get
{
return false;
}
}
}
但是这里还是想说一下,就是我们常规的做法是很喜欢判断,比如判断如果是加应该怎么做,如果是减又会怎么做,这里我们说一下怎么不用判断来实现这个东西其实就是键值对就行了,
我这里用了两个键值对,一个存放算式用来显示给用户,一个存放结果用户自己存储在session里边方便和用户输入的对比。其实用一个键值对也可以的,把值存储一个对象,包含这两个值就行了,或者使用lambda也行,但是这里更应该思考一下如何不使用lamdba也能做到
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)
评价