【转】前端验证码倒计时、后台发送验证码、创蓝短信接口

前端代码:倒计时

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>

<style>
        .yanzm_b_btn {
            width: 98px;
            height: 40px;
            float: left;
            line-height: 40px;
            text-align: center;
            border-radius: 5px;
            background: #f0f0f0;
            color: #aeaeae;
            font-size: 14px;
            margin-left: 10px;
            border: none;
            margin-bottom: 30px;
        }
    </style>
    <script src="http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js">
    </script>
</head>
<body>
    <input class="register_b_shouji" type="text" placeholder="请输入手机号" name="E_Mobile" id="E_Mobile">
    <input class="yanzm_b_btn" type="button" value="发送验证码" onclick="GetCodemo(this)"/>
</body>
</html>
<script>
    var wait = 60;
    function GetCodemo(o){
        //发送验证码
        if(wait == 60){
            //发送验证码
            var mobile = $("#E_Mobile").val();
            if(mobile!=""){
                //请求后台获取数据、
                $.post(‘getMobileCode‘,{mobile:mobile,type:‘reg‘},function(data){
                    if(data.status==1){
                        //发送成功
                    }else{
                        //发送失败
                    }
                },‘json‘);
            }else{
                $("#E_Mobile").focus();
                return false;
            }
        }
        if(wait ==0){
            o.removeAttribute(‘disabled‘);//禁用
            o.value= ‘重新发送‘;
            wait = 60;
        }else{
            o.setAttribute(‘disabled‘,true);
            o.value= "已发送("+wait+")";wait--;
            setTimeout(function(){GetCodemo(o)},1000);
        }
    }

</script>

后端发送验证码代码:

/**
     * 发送验证码
     */
    public function getMobileCode(){
        header("content-type:text/html; charset=utf-8");
        $Mobile = $_POST ["mobile"];      //用户修改的手机号

$type = trim($_POST["type"]); // 定义用来发送短信
        $type = empty($type)?"reg":$type; //短信模版代码
        if (!empty($type) && strlen($Mobile)==11){
            $Template = M("pagetemplate")->where(array("E_Type"=>$type))->cache(true,6000)->find();   //判断类型,发送验证码有多个地方使用到,比如找回密码,注册等
            if(empty($Template)) $this->jsonReturn(0, "短信类型异常!", ‘‘);
            if(!empty($Template[‘ID‘])){
                $Code    = getCode(5);//验证码
                $sendstr = str_replace("0000", "", $Template["E_Template"]);  //发送验证码文本、替换、例子:你正在注册某某商城,验证码为0000,[某某商城]
                $result  = sendSMS($Mobile, $sendstr, ‘true‘);  //调用创蓝短信方法
                $result = $this->execResult($result);  //处理返回值
                if($result[1] == "0") {  //返回的是一个数组、状态码 0 是成功
                    $seReCode = $Mobile . "," . $Code;
                    $_SESSION[‘MobileCode‘] = $seReCode;
                    $this->jsonReturn(1, "发送成功!", ‘‘);
                }else{
                    $this->jsonReturn(0, "发送失败!", ‘‘);
                }
            }else{
                $this->jsonReturn(0, "异常、非法操作!", ‘‘);
            }
        }else{
            $this->jsonReturn(0, "异常、非法手机号!", ‘‘);
        }
    }

/**
* 查询额度
*
* 查询地址
*/
protected function queryBalance() {
$chuanglan_config = $this->GetInterfacecon ( ‘message‘ );
// 查询参数
$postArr = array (
‘account‘ => $chuanglan_config ["ConS"] [‘USERID‘] [‘val‘],
‘pswd‘ => $chuanglan_config ["ConS"] [‘PWD‘] [‘val‘] 
);
$result = $this->curlPost ( $chuanglan_config ["ConS"] [‘URLQ‘] [‘val‘], $postArr );
return $result;
}

/**
* 处理返回值
*/
protected function execResult($result) {
$result = preg_split ( "/[,\r\n]/", $result );
return $result;
}

/**
* 通过CURL发送HTTP请求
*
* @param string $url
*         //请求URL
* @param array $postFields
*         //请求参数
* @return mixed
*/
protected function curlPost($url, $postFields) {
$postFields = http_build_query ( $postFields );
$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_POST, 1 );
curl_setopt ( $ch, CURLOPT_HEADER, 0 );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt ( $ch, CURLOPT_URL, $url );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $postFields );
$result = curl_exec ( $ch );
curl_close ( $ch );
// dump ( $result );
return $result;
}

/**
* 发送短信
*
* @param string $mobile
*         手机号码
* @param string $msg
*         短信内容
* @param string $needstatus
*         是否需要状态报告
* @param string $product
*         产品id,可选
* @param string $extno
*         扩展码,可选
*/
protected function sendSMS($mobile, $msg, $needstatus = ‘false‘, $product = ‘‘, $extno = ‘‘) {

// 创蓝接口参数
$postArr = array (
‘account‘ => ‘‘,//账号
‘pswd‘ => ‘‘,//密码
‘msg‘ => $msg, //发送内容
‘mobile‘ => $mobile, //手机号
‘needstatus‘ => $needstatus,
‘product‘ => $product,
‘extno‘ => $extno 
);
$result = $this->curlPost ( $chuanglan_config ["ConS"] [‘URL‘] [‘val‘], $postArr );
return $result;
}

官方文档:https://www.253.com/api-docs-5.html,状态码地址:https://www.253.com/api-docs-1.html

版权声明:本文为博主原创文章,可以转载 https://blog.csdn.net/hua950327/article/details/78064801

原文地址:https://www.cnblogs.com/apolloren/p/9260969.html

时间: 2024-10-08 13:44:01

【转】前端验证码倒计时、后台发送验证码、创蓝短信接口的相关文章

【PHP】创蓝253云通信平台国际短信接口调用demo案例

PHP接口请求类<?phpheader("Content-type:text/html; charset=UTF-8"); / 类名:ChuanglanSmsApi 功能:创蓝接口请求类 详细:构造创蓝短信接口请求,获取远程HTTP数据 版本:1.3 日期:2017-04-12 说明: 以下代码只是为了方便客户测试而提供的样例代码,客户可以根据自己网站的需要,按照技术文档自行编写,并非一定要使用该代码. 该代码仅供学习和研究创蓝接口使用,只是提供一个参考.*/ class Chu

Yii2在Form中处理短信验证码的Validator,耦合度最低的短信验证码验证方式

短信验证码在目前大多数web应用中都会有,本文介绍一个基于Yii2 Validator方式的验证码验证方式. 在其他文章中看到的方式大多比较难做到一次封装,多次重用. 使用此方式的好处自然不用多说,Validator支持在Model和Form中使用,使用的时候只需要在rules中添加一条验证规则即可. 第一步: 准备数据表,用来存储短信验证码 CREATE TABLE `tbl_sms_log` ( `id` int(11) NOT NULL AUTO_INCREMENT, `to` varch

Thinkphp框架 -- 短信接口验证码

我用的是一款名叫 短信宝 的应用,新注册的用户可以免费3条测试短信,发现一个BUG,同个手机可以无限注册,自己玩玩还是可以的. 里面的短信接口代码什么信息都没有,感觉看得不是很明白,自己测试了一遍,可以用,直接调用就可以的,如果要用到项目中还有很多细节要处理,比如 设置一个验证码的存活时间,还有点击按钮每隔一分钟才能按一次,还有判断这个用户发的短信另一个用户能不能用,以后有时间再接下去做,现在先来个简易版的 视图层View 1 <!doctype html> 2 <html lang=&

106短信简单描述与验证码短信接口介绍

如何调用 106短信验证码 接口地址 怎么样找短信公司要106短信验证码接口测试费用 一.什么是106端口短信: 106短信通道是指仅中国移动.中国联通提供的网关短信平台,实现与客户指定号码进行短信批量发送和自定义发送的目的,即你收到的短信在手机上以106开头的短信称为106短信. 短信通道的分类国内短信通道主要分为:106通道.电信虚拟短信通道:电话区号(类似021)的.1069三网合一企业实名制通,106通道一般显示为:106通道(10657移动,联通10655,电信10659).全网移动企

如何选择一家好的验证码短信接口服务商?

多年的行业经验及与客户沟通中所了解的一些信息反馈.现在总结出来 跟大家说一说,怎样去选择一家比较好的短信接口提供商. 公司网站/app想嵌入短信接口 发验证短信.去网上一搜几十家,每个网站的产品宣传.介绍都大同小异,挑了几家问问价格低至3,4分,高至7,8分.价格高的会说是验证码专用通道,但又去问问价格低的 也说是专用 这时在没使用过的情况下 价格低的完全占绝对优势 因为70%客户会选择价格便宜的.于是乎就开了帐号 充值使用了,用了3天,一个礼拜或者1-2个月 渐渐的问题开始多了,收不到 延迟厉

VB通过http调用验证码短信接口源码

通过验证码短信http调用接口,您可以很快速的在网站或者app中集成手机号验证功能,该源码只是核心代码,具体可以根据您的实际需求进行扩展. 该DEMO是VB通过http调用验证码短信接口源码: VERSION 5.00 Object = "{248DD890-BB45-11CF-9ABC-0080C7E7B78D}#1.0#0"; "Mswinsck.OCX" Begin VB.Form Form1 Caption = "Form1" Clien

php短信接口,免认证限制少的接口,手机短信,短信验证码

下面介绍一下kewail的短信接口,链接:https://www.kewail.com/ // Works well with php5.3 and php5.6. namespace Kewail\Sms; require_once('SmsSenderUtil.php'); class SmsSingleSender {var $url;var $accesskey;var $secretkey;var $util; function __construct($accesskey, $sec

thinkphp5 阿里云短信 发送多参数的短信

有的朋友用阿里oss的时候可能会发送多参数的短信, 例如短信模版是  您好${code1},收到您的联系方式${code2},您的地址为${code3},我们会尽快派送. 类似于这样的多参数模版,首先第一关,可能是参数过长,怎么办,直接去阿里申请售后就可以了,和他们反馈一下,然后他们会给你把字数限制解除,然后你就可以传递超过20个字的内容了. 这一步完事,下一步就是接入阿里oss了,首先下载阿里oss的 类包了,去阿里官网下载就可以了,我这里整合的是thinkphp5.下载完成后具体步骤如下 1

短信接口源码,实现按钮变灰,倒计时的功能,非常不错

不多说费话了,直接上代码,有什么不懂的朋友可以给我留言,关于代码中返回值代表多少请参考官网,短信接口:http://www.56dxw.com  关于js的下载可以百度搜索一下,关于图片验证码可以从网上找一下,在这儿只记录一下如何调用短信接口实现短信的发送的 reg.aspx========================================================= <%@ Page Language="C#" AutoEventWireup="t