获取验证码效果和后台代码

客户端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";//异常
            }
        }

  

时间: 2024-10-13 11:52:09

获取验证码效果和后台代码的相关文章

iOS滑动解锁/滑动获取验证码效果实现

最近短信服务商要求公司的app在获取短信验证码时加上校验码,目前比较流行的是采用类似滑动解锁的方式,我们公司采取的就是这种方式,设计图如下所示: 这里校验内部的处理逻辑不作介绍,主要分享一下界面效果的实现, 下面贴出代码: 先子类化UISlider #import <UIKit/UIKit.h> #define SliderWidth 240 #define SliderHeight 40 #define SliderLabelTextColor [UIColor colorWithRed:1

Android实现获取验证码效果

功能非常简单就是定义一个CountDownTimer直接看代码 首先在XML里面放个按钮代码如下: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout

点击获取验证码效果

1 var Btn = document.getElementById('btn'); 2 var star = 10; 3 4 Btn.onclick = function(){ 5 var timer = setInterval(function(){ 6 star--; 7 Btn.disabled = true; 8 Btn.innerHTML = "重新发送验证码" + "(" + star + ")"; 9 console.log(s

JQuery 获取验证码倒计时

HTML代码: <button id="btn">点击获取验证码</button> Jquery:代码: $(document).ready(function() { $('#btn').on('click',function(){ var time = 10; setInterval(function (){ time --; if(time>0){ $('#btn').attr({'disabled':'disabled'}); $('#btn').h

用CountDownTimer实现获取手机验证码效果

简述: CountDownTimer类用来实现倒计时效果. 构造方法接收两个参数,第一个设置倒计时长度,第二个设置倒计时间隔. 用此方法时只需复写onTick()和onFinish()这两个方法即可. 示例: package com.example.androidtest; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.os.CountDow

Andorid实现点击获取验证码倒计时效果

这篇文章主要介绍了Andorid实现点击获取验证码倒计时效果,这种效果大家经常遇到,想知道如何实现的,请阅读本文 我们在开发中经常用到倒计时的功能,比如发送验证码后,倒计时60s再进行验证码的获取,为了方便以后使用,这里做个记录,讲讲倒计时器的实现. 1.先进行倒计时工具类的封装 1 public class CountDownTimerUtils extends CountDownTimer { 2 private TextView mTextView; 3 4 /** 5 * @param

ASP.NET WebForm中JavaScript修改了页面上Label的值,如何在后台代码中获取

在用ASP.NET WebForm开发一个项目时,遇到如下的一个情况 页面上有一个Textbox控件,还有2个Label 控件. 当Textbox控件中的值更改时,两个Label控件上的值做相应的更改, 这一点是通过页面中嵌入的JavaScript来实现的. 但是,Label控件上的值更改后,在后端.cs代码中,通过Label.Text 并不能取到更改后的值. order.aspx页面代码如下: <%@ Page Language="C#" AutoEventWireup=&qu

js获取验证码 秒表效果(原创)

<script src="http://code.jquery.com/jquery-latest.js"></script> <input type="button" onclick="setclock($(this),10);" value="获取验证码"> <script> function setclock(dom,value,text) { value=argument

手机注册获取验证码的PHP代码

php代码 <?php require dirname(__FILE__).'/include/common.inc.php';//这是在cms2008下面做的测试 header("content-type:text/html; charset=utf-8;"); session_start();//开启缓存 if (isset($_SESSION['time']))//判断缓存时间 { session_id(); $_SESSION['time']; } else { $_SE