(二)验证码模块(随机英文验证and随机英文数字混合验证+Session)
随机英文验证(大小写字母组合)跟前面的随机数字验证码差不多。
由于大小写字母一共有52个,我不可能一个一个的写出来弄成一个数字,所以,我上网查找了资料,可以利用ascii将数字转为字母。但是在转换过程中也出现了一系列问题。存在一直出现索引超出范围的问题,后来调试了蛮久,才发现是我定义的空String数组没有初始化,初始化必须要指定长度。
letter.cs代码
namespace number
{public partial class letter : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){Label1.Text = getletters(4); }if (!string.IsNullOrEmpty(HiddenField1.Value)){Session["letters"] = HiddenField1.Value.ToLower();Label1.Text = HiddenField1.Value;}} private String getletters(int n){String s = "";int cal = 0;String[] num = new String[52];//必须要初始化,在你初始化的时候要指定长度for (int i = 65; i <= 122; i++){if (i > 90 && i < 97)continue;System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding();byte[] btNumber = new byte[] { (byte)i };num[cal] = asciiEncoding.GetString(btNumber);cal += 1;}Random ran = new Random();for (int i = 0; i < n; i++){int t = ran.Next(num.Length);//产生一个小于num.Length的数字s += num[t];}Session["letters"] = s.ToLower();return s;}protected void Button1_Click1(object sender, EventArgs e){if (TextBox1.Text.ToLower() == Session["letters"].ToString()){Response.Write("成功!");TextBox1.Text = "";}else{Response.Write("失败!");TextBox1.Text = "";HiddenField1.Value = "";Label1.Text = getletters(4);//重新产生随机数字}}}
}
letter.aspx代码
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><title>随机英文验证码</title><script type="text/javascript">function getletters(n) {var s = ""; var cal = 0;var num = new Array(52); for(var i=65;i<=122;i++){if (i > 90 && i < 97)continue; num[cal] = String.fromCharCode(i); cal+=1;} for (var i = 0; i < n; i++) {var t = Math.ceil(Math.random() * num.length);//Math.ceil(n); 返回大于等于n的最小整数。s += num[t];}document.getElementById("Label1").innerHTML = s;//这里不能是.Text,label在客户端会变成<span>,如果不用innerHTML改变不了值 document.getElementById("HiddenField1").value = s;}function changestyle() {document.getElementById("lab").style.cursor = 'pointer';}</script>
</head>
<body><form id="form1" runat="server"><div></div><p>验证码:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</p><div id="lab" οnclick="getletters(4)" οnmοusemοve="changestyle()"><asp:Label ID="Label1" runat="server" Text="Label"></asp:Label></div> <%--<a href="javascript:void(0)" οnclick="getletters(4)" >看不清,换一张</a> --%><%-- <!-- -->, html comment会包含在最终生成的html文件中现在使用的注释,aspx comment 不会包含在最终生成的html文件中 --%><asp:HiddenField ID="HiddenField1" runat="server" /><asp:Button ID="Button1" runat="server" Text="提交" OnClick="Button1_Click1" /></form>
</body>
</html>
效果图
随机字母加数字验证就不多废话了,把随机数字和英文验证的代码整合在一起就可以了。
代码放在https://github.com/1126048156/-.git
letter这部分就是随机英文验证码的代码,mixture是英文加数字混合的代码。
(二)验证码模块(随机英文验证and随机英文数字混合验证+Session)相关推荐
- Windows身份验证和混合验证的区别
两个验证方式的不同主要集中在信任连接和非信任连接. windows 身份验证相对于混合模式更加安全,使用本连接模式时候,sql不判断sa密码,而仅根据用户的windows权限来进行身份验证,我们称为& ...
- java--随机验证码的生成(4个随机英文与1个数字)
逻辑在于:使用数组存储52个英文字母(大写+小写),利用random生成随机索引,通过随机索引获取对应的英文字母,即可达到随机获取验证码的目的. 加入0~9随机数字,如果不将字符串转换形成字符数组的话 ...
- Abp.Zero 手机号免密登录验证与号码绑定功能的实现(一):验证码模块
这是一篇系列博文,我将使用Abp.Zero搭建一套集成手机号免密登录验证与号码绑定功能的用户系统: Abp.Zero 手机号免密登录验证与号码绑定功能的实现(一):验证码模块 Abp.Zero 手机号 ...
- python随机产生100个整数二进制_PYTHON练习题 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数。...
Python 练习 标签: Python Python练习题 Python知识点 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数,如果大于预设的 ...
- python验证码生成器_用Python实现随机验证码
0.说明 在网络上各种平台上登陆时,都会看到各种各样的验证码,大部分都是字母+数字的随机验证码,下面来主要是通过Python生成一个可以包含大小写字母和数字的随机验证码. 1.思路 在Python中, ...
- python随机森林 交叉验证_随机森林算法详解及Python实现
一 简介 随机森林是一种比较有名的集成学习方法,属于集成学习算法中弱学习器之间不存在依赖的一部分,其因为这个优点可以并行化运行,因此随机森林在一些大赛中往往是首要选择的模型. 随机森立中随机是核心,通 ...
- python让用户输入一个整数_PYTHON练习题 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数。...
Python 练习 标签: Python Python练习题 Python知识点 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数,如果大于预设的 ...
- python使用random模块生成随机数、实现随机乱序和随机抽样?
如何使用random模块生成随机数.实现随机乱序和随机抽样? random.random()函数可以生成[0.0, 1.0)之间的随机浮点数. random.uniform(a, b)函数可以生成[a ...
- 用三个线程实现生产者消费者模型,其中一个线程作为生产者,二个线程作为消费者,生产者随机生产一个时间戳或者字符串,消费者消费这个时间戳,并不能重复消费,并将其打印出来
题目要求: 用三个线程实现生产者消费者模型,其中一个线程作为生产者,二个线程作为消费者,生产者随机生产一个时间戳或者字符串,消费者消费这个时间戳,并不能重复消费,并将其打印出来.(这是一道百度面试的算 ...
最新文章
- 50大产业链全景图(高清完整版)
- JS鼠标移动显示图片
- 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?...
- 剑指Offer #13 调整数组顺序使奇数位于偶数前面 | 图文详解
- Java提取mssql备份文件的数据
- java 抽象封装多态_java面向对象(封装,继承,多态,抽象,接口的定义和实现)...
- Spring框架jar包分类(转)
- 数据结构C语言数组字符数组
- 转一篇:如何快速的修改参考文献
- BRVAH分组功能原理分析
- python pypdf2另存为图片_Python系列—PDF文本与图片抽取
- Call for Presentations!Flink Forward Global 2021 议题征集ing
- 「轻阅读」基于 Flink SQL CDC的实时数据同步方案,附视频教程
- 笔记本计算机故障与诊断,笔记本电脑维护与故障诊断
- 电脑远程连接已停止工作 解决方案
- DAVE笔记--Micrium uc-Probo DashBoard调试
- CVPR2021提出的一些新数据集汇总
- 怎么把所有图片变成一样的大小
- 29 外观模式(Facade模式)详解
- 在 Excel 中查询每个区间并排序