以下是"asp.net中3种验证码示例(实现代码)(数字,数字字母混和,汉字)"的完整攻略:
一、数字验证码示例
数字验证码常用于防止恶意注册或恶意登录操作。可以通过以下代码实现数字验证码的生成:
public ActionResult VerifyCode()
{
int codeLength = 4;//验证码长度
string code = "";
for (int i = 0; i < codeLength; i++)//生成随机数
{
code += new Random(Guid.NewGuid().GetHashCode()).Next(0, 9).ToString();
}
Session["Code"] = code;//将验证码保存到Session中,方便后续的验证
MemoryStream ms = new MemoryStream();
Bitmap img = new Bitmap(80, 30);
Graphics g = Graphics.FromImage(img);
g.Clear(Color.White);
g.DrawString(code, new Font("宋体", 14), new SolidBrush(Color.FromArgb(r.Next(0, 255), r.Next(0, 255), r.Next(0, 255))), new RectangleF(0, 0, 80, 30));//将随机数画入图片中
img.Save(ms, ImageFormat.Jpeg);//将图片保存到内存流中
Response.BinaryWrite(ms.ToArray());//输出验证码图片
return null;
}
二、数字字母混合验证码示例
数字字母混合验证码常用于加强安全性。可以通过以下代码实现数字字母混合验证码的生成:
public ActionResult VerifyCodeMixed()
{
int codeLength = 4;//验证码长度
string code = "";
for (int i = 0; i < codeLength; i++)//生成随机数
{
int rand = new Random(Guid.NewGuid().GetHashCode()).Next(0, 36);//生成一个随机数,在0到35之间,分别对应数字和大小写字母
if (rand < 10)
{
code += rand.ToString();//如果生成的随机数在0到9之间,就直接保存
}
else if (rand < 36)
{
code += Convert.ToChar(rand - 10 + 'a').ToString();//如果生成的随机数在10到25之间,将其转换成小写字母并保存
}
}
Session["CodeMixed"] = code;//将验证码保存到Session中,方便后续的验证
MemoryStream ms = new MemoryStream();
Bitmap img = new Bitmap(80, 30);
Graphics g = Graphics.FromImage(img);
g.Clear(Color.White);
for (int i = 0; i < codeLength; i++)//将随机数画入图片中
{
g.DrawString(code[i].ToString(), new Font("宋体", 14), new SolidBrush(Color.FromArgb(r.Next(0, 255), r.Next(0, 255), r.Next(0, 255))), new RectangleF(i * 20, 0, 20, 30));
}
img.Save(ms, ImageFormat.Jpeg);//将图片保存到内存流中
Response.BinaryWrite(ms.ToArray());//输出验证码图片
return null;
}
三、汉字验证码示例
汉字验证码常用于防止机器人注册或非法提交内容。可以通过以下代码实现汉字验证码的生成:
public ActionResult VerifyCodeChinese()
{
string[] array = new string[] { "九曲桥边野草花", "疏影横斜水清浅", "暗自低声烟欲断", "多情自古伤离别", "更那堪冷落清秋节" };//验证码文字数组
string code = array[new Random(Guid.NewGuid().GetHashCode()).Next(0, array.Length)];
Session["CodeChinese"] = code;//将验证码保存到Session中,方便后续的验证
MemoryStream ms = new MemoryStream();
Bitmap img = new Bitmap(150, 60);
Graphics g = Graphics.FromImage(img);
Font font = new Font("微软雅黑", 16, FontStyle.Bold);
Brush brush = new SolidBrush(Color.FromArgb(r.Next(0, 255), r.Next(0, 255), r.Next(0, 255)));
g.Clear(Color.White);
g.DrawString(code, font, brush, new PointF(0, 10));
img.Save(ms, ImageFormat.Jpeg);//将图片保存到内存流中
Response.BinaryWrite(ms.ToArray());//输出验证码图片
return null;
}
以上三个方法分别生成了数字、数字字母混合、汉字验证码。可以根据实际需要进行选择使用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:asp.net中3种验证码示例(实现代码)(数字,数字字母混和,汉字) - Python技术站