【第十八篇】手机验证码

废话不多说,直接上代码。

                <div class="form-group has-feedback">
                    <div class="input-group">
                        <input type="text" class="form-control input-large" name="phone" id="phone" placeholder="请输入您的手机号">
                        <span class="input-group-btn">
                            <button class="btn btn-info" style="" type="button" onclick="sendMessage()">发送验证码</button>
                        </span>
                    </div>
                </div>
                <div class="form-group has-feedback">
                    <div class="input-append">
                        <input type="text" class="form-control span2" placeholder="验证码" name="code" onfocus="checkPhone()" />
                        <span class="add-on" id="msg"></span>
                    </div>
                </div>
        var InterValObj; //timer变量,控制时间
        var count = 60; //间隔函数,1秒执行
        var curCount;//当前剩余秒数
        var code = ""; //验证码
        var codeLength = 6;//验证码长度
        function sendMessage() {
            if (checkInput()) {
                curCount = count;
                for (var i = 0; i < codeLength; i++) {
                    code += parseInt(Math.random() * 9).toString();
                }
                //设置button效果,开始计时
                $("#btnSendCode").attr("disabled", "true");
                $("#btnSendCode").val("请在" + curCount + "秒内输入验证码");
                InterValObj = window.setInterval(SetRemainTime, 1000); //启动计时器,1秒执行一次
                //向后台发送处理数据
                var postData = {
                    Code: code,
                    Phone: $("#phone").val()
                }
                $.ajax({
                    type: "POST", //用POST方式传输
                    dataType: "text", //数据格式:JSON
                    url: ‘/Account/Yanzheng‘, //目标地址
                    data: postData,
                    error: function (XMLHttpRequest, textStatus, errorThrown) { },
                    success: function (msg) {
                        if (msg == "0") {
                            layer.msg("验证码发送成功!");
                        } else if (msg == "-1") {
                            layer.msg("验证码发送失败!");
                            window.clearInterval(InterValObj);//停止计时器
                            $("#btnSendCode").removeAttr("disabled");//启用按钮
                            $("#btnSendCode").val("重新发送验证码");
                            code = ""; //清除验证码。如果不清除,过时间后,输入收到的验证码依然有效
                        }
                    }
                });
            }
        }

        //timer处理函数
        function SetRemainTime() {
            if (curCount == 0) {
                window.clearInterval(InterValObj);//停止计时器
                $("#btnSendCode").removeAttr("disabled");//启用按钮
                $("#btnSendCode").val("重新发送验证码");
                code = ""; //清除验证码。如果不清除,过时间后,输入收到的验证码依然有效
            } else {
                curCount--;
                $("#btnSendCode").val("请在" + curCount + "秒内输入验证码");
            }
        }
        public ActionResult Yanzheng()
        {
            string Phone = Request["Phone"];
            string Code = Request["Code"];
            StringBuilder sms = new StringBuilder();
            sms.AppendFormat("name={0}", ""); //用户帐号
            sms.AppendFormat("&pwd={0}", "");//登陆平台,管理中心--基本资料--接口密码(28位密文);复制使用即可。
            sms.AppendFormat("&content={0}", "您好,感谢您登录,您获得的验证码是:" + Code);//发送内容
            sms.AppendFormat("&mobile={0}", Phone);//手机号码(多个用,隔开)
            sms.AppendFormat("&sign={0}", "");// 公司的简称或产品的简称都可以(用户签名:可以省略)
            sms.Append("&type=pt");
            string resp = pc.PushToWeb("http://.com/asmx/smsservice.aspx", sms.ToString(), Encoding.UTF8);
            string[] msg = resp.Split(‘,‘);
            if (msg[0] == "0")
            {
                Session["PhoneCode"] = Code;
                //return Content("提交成功:SendID=" + msg[1]);
                return Content("0");
            }
            else
            {
                //return Content( "提交失败:错误信息=" + msg[1]);
                return Content("-1");
            }
        }

---------------------------------------------------------------------------------------------------------

转载请记得说明作者和出处哦-.-
作者:KingDuDu
原文出处:http://www.cnblogs.com/kingdudu/p/4946878.html

---------------------------------------------------------------------------------------------------------

时间: 2024-12-14 18:48:51

【第十八篇】手机验证码的相关文章

Python之路【第十八篇】:Web框架们

Python之路[第十八篇]:Web框架们 Python的WEB框架 Bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Python的标准库外,其不依赖任何其他模块. 1 2 3 4 pip install bottle easy_install bottle apt-get install python-bottle wget http://bottlepy.org/bottle.py Bottle框架大致可以分为以下部分: 路

第十八篇:融汇贯通--谈USB Video Class驱动

USB Video Class驱动是WINDOWS系统包含的一个针对于USB VIDEO 类的驱动程序. 好多工程师都做过USB VIDEO设备端的开发, 主要的工作内容为: 使用FIRMWARE,或者LIINUX GADGET驱动程序, 构建USB VIDEO设备的描述符, 通过这些描述符的TOPOLOGY关系, 让系统了解,设备所支持的某些控制, 支持的视频格式, 系统驱动通过对这些描述符的解释, 构建自己的KS, FILTER, NODE, PIN网络, 属性, 方法, 最终, 又由这些F

【Python之路】第十八篇--MySQL(一)

[Python之路]第十八篇--MySQL(一) 一.概述 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access.MS SQL Server等 ? 答:他们均是一个软件,都有两个主要的功能: a. 将数据保存到文件或内存 b. 接收特定的命令,然后对文件进行相应的操作 PS:如果有了以上软件,无须自己再去创建文件和文件夹,而是直接传递 命令 给上述软件,让其来进行文件操作,他们统称为数

Python开发【第十八篇】:MySQL(二)

Python开发[第十八篇]:MySQL(二) 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用. SELECT * FROM ( SELECT nid, NAME FROM tb1 WHERE nid > 2 ) AS A WHERE A. NAME > 'alex'; 临时表搜索 1.创建视图 --格式:CREATE VIEW 视图名称 AS SQL语句 CREATE VIEW v

Egret入门学习日记 --- 第二十八篇(书中 9.19 ~ 9.19 节 内容)

第二十八篇(书中 9.19 节 内容) 没想到第九章的组件篇可真是够长的,没事,慢慢来吧. 开始 9.19节. 重点: 1.创建一个Tips提示组件. 操作: 1.创建一个Tips提示组件. 哇!出大问题!这个Tips组件有点牛皮!怎么办? 书中内容这部分,我直接懵逼. 还有这部分也是. 一点一点来分析好吧. 好,开始分析一波. 第一步:查看最终展示效果. 这是最终效果.(我去,我现在才知道,原来博客园的编辑器还可以放Gif图片...) 第二步:这个黑色的弹框组件本质上是由什么构成的? 可见,在

SpringBoot非官方教程 | 第十八篇: 定时任务(Scheduling Tasks)

转载请标明出处: http://blog.csdn.net/forezp/article/details/71023783 本文出自方志朋的博客 这篇文章将介绍怎么通过spring去做调度任务. 构建工程 创建一个Springboot工程,在它的程序入口加上@EnableScheduling,开启调度任务. @SpringBootApplication @EnableScheduling public class SpringbootSchedulingTasksApplication { pu

第十八篇 liunx系统下 JDK的安装

大家好,今天我给大家简单介绍一下我所学到的一些经验和总结: 今天我们学习了如何在liunx系统下 安装 JDK ,说到JDK 可能很多人都知道,JDK :英文名叫 Java Development Kit ,意思就是 Java 语言的软件开发工具包:其作用 我就不再一一介绍了,好了,下面就来说一下安装步骤吧: 第一步,先找到安装包,并且在DOS命令下打开,当然 liunx系统下的JDK安装包 跟Windows系统下的 JDK安装包不一样,这点需要大家注意一下: 第二步,配置环境变量,当然也是在

第二十八篇: 学习笔记

最近一直在学一些零零碎碎的东西, 首先,将<鸟哥的 Linux 私房菜 -- 基础学习篇>过了一遍. 因为有了Windows驱动,PCI/PCIe, USB, xHCI, Windows内核编程的基础, 加上自己以前也动手写过Linux设备驱动, 研究过Makefile, KConfig, make menuconfig, GIT的部分内容 鸟哥的这本书确实写得非常通俗易懂,帮我解开了一些以前知道怎么操作, 但不知道为什么要这样操作的疑惑. 另外,基本完成了USB Audio/Video Cl

python全栈开发基础【第十八篇】网络编程(socket)

一.网络协议 客户端/服务器架构 1.硬件C/S架构(打印机) 2.软件C/S架构(互联网中处处是C/S架构):B/S架构也是C/S架构的一种,B/S是浏览器/服务器 C/S架构与socket的关系:我们用socket就是为了完成C/S架构的开发 osi七层 引子: 须知一个完整的计算机系统是由硬件.操作系统.应用软件三者组成,具备了这三个条件,一台计算机系统就可以自己跟自己玩了(打个单机游戏,玩个扫雷啥的) 如果你要跟别人一起玩,那你就需要上网了,什么是互联网? 互联网的核心就是由一堆协议组成