获取验证码效果和后台代码(js+html+cs)
客户端js+html代码
<script type="text/javascript">
var tcode = 0;//定时器返回代码
//获得验证码
function GetVerifyCodeAction() {
var email = $("#email").val();
if (!checkEmail(email)) {
$("#area_error").addClass("log-tips").show().text(EmailFormatIsFault);//邮箱格式错误
}
else {
$.ajax({
type: "post",
async: false,
url: "/Handler/SendMsgToMail.ashx",
data: { op: 12, email: email },
success: function (result) {
var data = parseInt(result);
switch (data) {
case 1:
$("#area_error").addClass("log-tips").show().text(CheckVerifyCode);//验证码已发送,请注意查收
$("#btnSendCode").removeAttr("onclick");//移除发送验证码的click事件
tcode = setInterval("ReSend()", 1000);//设置定时器,60秒后容许再次发送
break;
case -1:
$("#area_error").addClass("log-tips").show().text(FillEmail);//请输入邮箱
break;
case -2:
$("#area_error").addClass("log-tips").show().text(MailNotReg);//邮箱尚未注册
break;
case -3:
$("#area_error").addClass("log-tips").show().text(OperateException);//操作异常
break;
case -4:
$("#area_error").addClass("log-tips").show().text(OperateException);//操作异常
break;
case -5:
$("#area_error").addClass("log-tips").show().text(OnceMinute);//每分钟只能发送一次
break;
default:
$("#area_error").addClass("log-tips").show().text(OperateException);//操作异常
break;
}
}
});
}
return false;
}
//点击进入下一步
function GoNext() {
$("#area_error").removeClass("log-tips").text("").hide();
var email = $("#email").val();
if (!checkEmail(email)) {
$("#area_error").addClass("log-tips").show().text(EmailFormatIsFault);//邮箱格式不正确
return false;
}
var vcode = $("#verify").val();
if (vcode == "") {
$("#area_error").addClass("log-tips").show().text(FillVerifyCode);//请输入验证码
return false;
}
//判断验证码是否正确
$.ajax({
type: "post",
url: "/Handler/Members.ashx",
data: { op: 14, email: email, vcode: vcode },
success: function (result) {
if (result == "-1") {
$("#area_error").addClass("log-tips").show().text(VCodeIsNotAvailable);//验证码已失效
}
if (result == "1") {
window.location = "forgot_password.aspx?email=" + email + "&vcode=" + vcode;
}
}
});
}
//定时器
function ReSend() {
var Wait60Second="60秒后重发";
var TotalCount = $("#hf_timecount").val();
TotalCount = TotalCount - 1;
$("#hf_timecount").val(TotalCount); if (TotalCount == 0) {
ReSetSendMail();
}
else {
$("#btnSendCode").text(Wait60Second.replace("60", TotalCount));
}
}
//重新附加发送邮箱事件
function ReSetSendMail() {
clearInterval(tcode);
$("#hf_timecount").val("60");
$("#btnSendCode").text("获取验证码");
$("#btnSendCode").attr("onclick", "GetVerifyCodeAction()");
}
</script>
<input id="hf_timecount" value="60" type="hidden" />
<input type="text" name="email" id="email" />
<button type="button" id="btnSendCode" onclick="GetVerifyCodeAction()">获取验证码</button>
<input type="text" name="verify" id="verify" />
<input type="button" id="btn_next" value="下一步" onclick="GoNext()"/>
服务端代码:
/// <summary>
/// 发送邮件
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
public string SendMail(HttpContext context)
{
try
{
if (!string.IsNullOrEmpty(CookiesHelper.getCookie("send_mail_limit")))
{
return "-5";//每分钟只能发送一次
}
string email = context.Request["email"];
if (string.IsNullOrEmpty(email) || !CommonHelper.IsValidEmail(email))
{
return "-1";//传值为空
}
//判断邮件是否存在
BLL.Web.Member bllMember = new BLL.Web.Member();
int mailCount = bllMember.GetCountByEmail(email);
Models.Web.Member member = bllMember.GetModelByEmail(email); if (mailCount == 0 || member == null)
{
return "-2";//不存在
} string vcode = CommonHelper.RandCode(8); Models.Web.VerifyCode model = new Models.Web.VerifyCode();
model.v_code = vcode;
model.v_createdate = DateTime.Now;
model.v_enddate = DateTime.Now.AddHours(2);
model.v_status = 0;
model.v_email = email; BLL.Web.VerifyCode bllVC = new BLL.Web.VerifyCode();
int no = bllVC.Append(model);
if (no > 0)
{
string sendText = "";
string tempPath = context.Server.MapPath("~/EmailTemp/ModifyPwd.txt"); using (StreamReader sr = new StreamReader(tempPath))
{
sendText = sr.ReadToEnd();
}
sendText = sendText.Replace("{UserName_CH}", member.PersnalName);
sendText = sendText.Replace("{UserName_EN}", member.PersnalName);
sendText = sendText.Replace("{VCode}", vcode); CommonHelper.SendEmail(email, sendText, Resource.Lang.RetrievePassword);
CookiesHelper.setCookie("send_mail_limit", "SendMail", 1.00);
}
else
{
return "-3";//验证码生成异常,请重试!
} return "1";//成功
}
catch (Exception)
{
return "-4";//异常
}
}
获取验证码效果和后台代码(js+html+cs)的更多相关文章
- 获取验证码,60秒倒计时js
<input type="button" id="btn" value="免费获取验证码" /><script type= ...
- Android 获取验证码倒计时实现
Android 获取验证码倒计时实现 2017年10月24日 09:55:41 FBY展菲 阅读数:2002 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.cs ...
- [RN] React Native 获取验证码 按钮
React Native 获取验证码 按钮 效果如图: 实现方法: 一.获取验证码 按钮组件 封装 CountDownButton.js "use strict"; import ...
- day80:luffy:短信sdk接入&点击获取验证码&注册功能的实现&Celery实现短信发送功能
目录 1.短信sdk接入 2.前端点击获取验证码效果 3.注册后端接口实现 4.注册-前端 5.Celery 6.Celery完成短信发送功能 1.短信sdk接入 1.准备工作 1.下载云通讯相关的文 ...
- JQuery 获取验证码倒计时
HTML代码: <button id="btn">点击获取验证码</button> Jquery:代码: $(document).ready(functio ...
- selenium+Python3.5获取验证码
其中PIL为Python Imaging Library,已经是Python平台事实上的图像处理标准库了.PIL功能非常强大,但API却非常简单易用. PIL第三方库安装 pip install PI ...
- 用户点击获取验证码之后我们会发送一条信息到用户手机,然后就会出现一个倒计时按钮,很像支付宝手机付款效果了,下面我给大家分享两个js效果
js代码 代码如下 复制代码 <div class="input"> <input type="button" id="bt ...
- js获取验证码 秒表效果(原创)
<script src="http://code.jquery.com/jquery-latest.js"></script> <input type ...
- Angular.js 使用获取验证码按钮实现-倒计时
获取验证码界面效果如图: 需要实现以下逻辑 按钮不可选 --输入电话号码,按钮可选 --点击获取,进入倒计时,按钮不可选 --倒计时结束,回到初识状态 核心代码: var cd = 60; var t ...
随机推荐
- css3网站收集
把群里大家推荐的网站做了下收集,等有时间了研究下 1.http://icomoon.io/app/ 这个网站用来生成跟导出字体图标的,自带的图标种类很多很丰富,基本够用了,不过你也可以自己设计,然后 ...
- ECCV 2018 | UBC&腾讯AI Lab提出首个模块化GAN架构,搞定任意图像PS组合
通常的图像转换模型(如 StarGAN.CycleGAN.IcGAN)无法实现同时训练,不同的转换配对也不能组合.在本文中,英属哥伦比亚大学(UBC)与腾讯 AI Lab 共同提出了一种新型的模块化多 ...
- 基于Linux的Samba开源共享解决方案测试(三)
在极限写场景下,对于网关的网络监控如图: 在极限写场景下,对于网关的网络监控如图: 在极限混合读写场景下,对于网关的网络监控如图: 在极限混合读写场景下,对于客户端的网络监控如图: 双NAS网关100 ...
- VS2015+Opencv半永久配置
电脑W7 64位+VS2015+opencv3.0 刚开始学习opeencv很麻烦,配置的问题都弄了好久,一旦重装又出现很多问题,在网上看了一个论坛说的永久配置,特意记录一下! 第一步:下载openc ...
- python之Web服务器案例
HTTP协议简介 1. 使用谷歌/火狐浏览器分析 在Web应用中,服务器把网页传给浏览器,实际上就是把网页的HTML代码发送给浏览器,让浏览器显示出来.而浏览器和服务器之间的传输协议是HTTP,所以: ...
- 浏览器。浏览器对象检测、Chrome调试工具
chrome浏览器的flash问题: 2017-12-26 chrome浏览器的flash有无法显示无法正常运行的问题时,解决方法如下: https://qzonestyle.gtimg.cn/qzo ...
- 使用spring注解——定义bean和自动注入
对于java bean的定义和依赖配置,使用xml文件真心是不方便. 今天学习如何用注解,解决bean的定义和注入. 常用注解: 1.自动注入:@Resources,@Autowired 2.Bean ...
- sql 数据库修复
数据库修复 exec sp_dboption 'dbname1','single user',‘true’ dbcc checkdb('dbname1') dbcc checkdb('dbname1' ...
- VBA 禁止保存
禁止保存 在workbook事件中 Private Sub Workbook_BeforeClose(Cancel As Boolean) Me.Saved = TrueEnd Sub Priv ...
- as2 fla 关于影片在时间轴的问题
多帧上面放着没实例名而且里面内容一致的影片,主要一开始读取了,那么跳帧的时候.会自动获取当前帧上的相同内容的影片. 但如果内容不一致的影片,那么在跳帧后,不会获取当前的影片,旧的影片也无法获取.只在当 ...