我在在众多的第三方短信服务商里选择了云片网这个短信服务商,我也会尽可能利用最简单的方式去帮助广大开发者解决短信验证码功能模块的实现。

再次之前我也参考了大部分网上的博客等,大多数都是把云片网的demo原封不动搬上去,对于我这个前端人员来说,根本毫无头绪,故此我将细致的讲解如何操作,以及献上我的源码。

我的业务流程就是通过点击发送验证码这个按钮,触发一个ajax请求事件,将手机号发送到后台,后台生成验证码发送到手机端,并返回这个验证码给前台进行验证码的验证。

请求的php后端代码如下

post.php<?php

header("Content-Type:text/html;charset=utf-8");

$apikey = "xxxxxxxxxxxxxxx"; //修改为您的apikey(https://www.yunpian.com)登录官网后获取

$mobile =$_POST['mobile']; //获取传入的手机号

// $mobile = "xxxxxxxxxxx"; //请用自己的手机号代替

$num = rand(1000,9999); //随机产生四位数字的验证码

setcookie('shopCode',$num);

$text="【蒙羊羊】您的验证码是".$num."。";

$ch = curl_init();

/* 设置验证方式 */

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept:text/plain;charset=utf-8',

'Content-Type:application/x-www-form-urlencoded', 'charset=utf-8'));

/* 设置返回结果为流 */

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

/* 设置超时时间*/

curl_setopt($ch, CURLOPT_TIMEOUT, 10);

/* 设置通信方式 */

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

// 取得用户信息

$json_data = get_user($ch,$apikey);

$array = json_decode($json_data,true);

// echo '

';print_r($array);

// 发送短信

$data=array('text'=>$text,'apikey'=>$apikey,'mobile'=>$mobile);

$json_data = send($ch,$data);

$array = json_decode($json_data,true);

// echo '

';print_r($array);

// 发送模板短信

// 需要对value进行编码

$data = array('tpl_id' => '1', 'tpl_value' => ('#code#').

'='.urlencode($num).

'&'.urlencode('#company#').

'='.urlencode('蒙羊羊'), 'apikey' => $apikey, 'mobile' => $mobile);

// print_r ($data);

$json_data = tpl_send($ch,$data);

$array = json_decode($json_data,true);

echo $num;

// 发送语音验证码

// $data=array('code'=>$num,'apikey'=>$apikey,'mobile'=>$mobile);

// $json_data =voice_send($ch,$data);

// $array = json_decode($json_data,true);

// echo $num;

// 发送语音通知,务必要报备好模板

/*

模板: 课程#name#在#time#开始。 最终发送结果: 课程深度学习在14:00开始

*/

$tpl_id = 'xxxxxxx'; //修改为你自己后台报备的模板id

$tpl_value = urlencode('#time#').'='.urlencode($num).'&'.urlencode('#name#').'='.urlencode('蒙羊羊');

$data=array('tpl_id'=>$tpl_id,'tpl_value'=>$tpl_value,'apikey'=>$apikey,'mobile'=>$mobile);

$json_data = notify_send($ch,$data);

$array = json_decode($json_data,true);

// echo $num;

curl_close($ch);

/************************************************************************************/

//获得账户

function get_user($ch,$apikey){

curl_setopt ($ch, CURLOPT_URL, 'https://sms.yunpian.com/v2/user/get.json');

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array('apikey' => $apikey)));

$result = curl_exec($ch);

$error = curl_error($ch);

checkErr($result,$error);

return $result;

}

function send($ch,$data){

curl_setopt ($ch, CURLOPT_URL, 'https://sms.yunpian.com/v2/sms/single_send.json');

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));

$result = curl_exec($ch);

$error = curl_error($ch);

checkErr($result,$error);

return $result;

}

function tpl_send($ch,$data){

curl_setopt ($ch, CURLOPT_URL,

'https://sms.yunpian.com/v2/sms/tpl_single_send.json');

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));

$result = curl_exec($ch);

$error = curl_error($ch);

checkErr($result,$error);

return $result;

}

function voice_send($ch,$data){

curl_setopt ($ch, CURLOPT_URL, 'http://voice.yunpian.com/v2/voice/send.json');

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));

$result = curl_exec($ch);

$error = curl_error($ch);

checkErr($result,$error);

return $result;

}

function notify_send($ch,$data){

curl_setopt ($ch, CURLOPT_URL, 'https://voice.yunpian.com/v2/voice/tpl_notify.json');

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));

$result = curl_exec($ch);

$error = curl_error($ch);

checkErr($result,$error);

return $result;

}

function checkErr($result,$error) {

if($result === false)

{

echo 'Curl error: ' . $error;

}

else

{

//echo '操作完成没有任何错误';

}

}

?>

这个php后台是我在官方提供的demo上进行修改的,删除了语音验证这个功能,只保留了短信验证,并将返回给前端的数据只保留了四位数字的验证码,方便前端进行验证码的验证。

官方原demo连接如下···链接index.html

如下代码是进行点击并发送ajax请求,将请求的验证码并保存到localStorage中$.ajax({

type: "post",

url: "post.php", //后台代码文件名

data: {

mobile:$('#phone').val()//获取输入的手机号

},

// dataType: "json",

success:function(data){

console.log(data);

layer.msg('验证码发送成功,请注意查收!');

localStorage.setItem('code', JSON.stringify(data))

},

error:function(err){

console.log(err);

}

});

进行验证码验证var code = JSON.parse(localStorage.getItem('code'))

if($('#code').val() != code ){

layer.msg('验证码输入错误');

return false;

}

相信看了这些案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

相关阅读:

php如何写短信验证码,怎么用php实现短信验证码发送相关推荐

  1. python自动读取短信_自动化测试-自动获取手机短信验证码

    最近在做生产环境自动化测试,碰到一个难题就是短信验证码的获取,生产环境短信验证码是真实的,不能采用测试环境将短信验证码写成固定的方法解决,我的思路是:做一个apk小程序,将手机上的短信验证码实时读取出 ...

  2. android 验证码之短信验证(云之讯短信平台)

    好久没更新过博客了.这段时间总算是忙完了,抽点时间出来更新下博客.这次跟大家带来的是一个很简单的短信验证码.相信这个验证码的功能基本上99的项目都需要用到,我这里是用的云之迅平台,为什么要用这个平台, ...

  3. java黑名单校验_短信验证码被刷怎么办?java 短信验证码防刷策略

    一 事件简述 这是一件发生在前段时间的事情,当时的情况是这样的:一个新的功能模块上线之后,出现短信接口被恶意访问调用的情况,请求数量很大,而且通过查看短信服务商控制台也发现,短信发送量在飙升,看着统计 ...

  4. java调用短信验证失败_短信验证码被刷怎么办?java 短信验证码防刷策略

    一 事件简述 这是一件发生在前段时间的事情,当时的情况是这样的:一个新的功能模块上线之后,出现短信接口被恶意访问调用的情况,请求数量很大,而且通过查看短信服务商控制台也发现,短信发送量在飙升,看着统计 ...

  5. java手机短信验证,并存入redis中,验证码时效5分钟

    目录 1.注册发送短信账号一个账号 2.打开虚拟机,将redis服务端打开 3.创建springboot工程,导入相关依赖 4.写yml配置 5.创建controller层,并创建controller ...

  6. mob sdk vue 短信验证_如何快速集成短信验证码API[图文教程]

    基础知识 以SUBMAIL为例,在进行以下步骤前,请先完成您的账户配置并认证. 步骤一.前往->开发者 ->SDK开发包下载页面,下载对应语言的SDK开发包. SUBMAIL 提供多达9种 ...

  7. python发送免费短信验证码(腾讯云 短信)

    第一步,首先去注册一个微信小程序,在腾讯云短信服务中创建签名的时候会用到哦. 点击此链接进入微信公众平台 注册好微信小程序,之后. 第二步,如果您还没有腾讯云账号,您需要 注册腾讯云 账号,并完成 实 ...

  8. 微信小程序短信验证码 php,微信小程序中短信验证码登录全流程及代码

    才开始学习小程序,用到短信验证码登录,使用榛子云短信(smsow.zhenzikj.com) 效果: 我是java开发者,后端使用了springMvc 短信验证码实现流程 1.构造手机验证码,生成一个 ...

  9. 上行短信验证码服务可以作为106短信验证码的补充

    集成开发过106短信验证码的都知道,短信经常会出现一些异常. 比如 1.延迟  由于网络等原因,很久才能收到  2.丢包  3.客户手机或者信号异常 因为短信还受政策等影响,哪怕你是短信验证码服务,也 ...

  10. 聚合数据短信验证码接口实现 Android开发短信验证码

    在说Android中的短信验证码这个知识点前,我们首先来了解下聚合数据 聚合数据介绍 聚合数据是一家国内最大的基础数据API提供商,专业从事互联网数据服务.免费提供从天气查询.空气质量.地图坐标到金融 ...

最新文章

  1. 祝贺《WCF邮件通信系统》在高阳市场研究汇编第五期发表
  2. Linux系统.xsesion日志文件,linux系统日志
  3. 结构体、类的成员对齐
  4. JavaScript编码encode和decode escape和unescape
  5. 生成任意内容任意类型的文件
  6. php7.3安装yaf扩展(亲测)
  7. leetcode 482. 密钥格式化(Java版)
  8. SyntaxError: (hbase):100: syntax error, unexpected tIDENTIFIER
  9. WebService的学习
  10. Linux 内核如何描述一个进程?
  11. Node.js 开发技能图谱
  12. 20个短视频素材网站
  13. mysql中勒索病毒的防护措施_勒索病毒防御措施
  14. Silvaco 学习笔记——物理模型:载流子产生复合模型
  15. 杀人游戏规则总结(转自龙的天空)
  16. MySQL按照字符排序,英文,中文,数字综合排序
  17. 音视频技术开发周刊 | 277
  18. apple id两步验证服务器,如何开启 Apple ID 两步验证
  19. 远程服务器怎么能显示电脑u盘,怎样在远程服务器上看到u盘
  20. nginx下使用SSI

热门文章

  1. 解方程2(C语言,一元一次)
  2. 企业上云一张网,华为将在分析师大会上亮出哪些大招?
  3. pAdTy_5 构建可穿戴设备的应用程序
  4. 广州花街开进机场航站楼 旅客喜逛“迷你花市”
  5. iphone 快捷指令 python_手把手教你使用 iOS 效率神器 「快捷指令」
  6. 美国工作_美国最高薪的工作
  7. 总结PID算法,位置式增量式理解以及C代码实现
  8. 用OneNote+Xmind思维导图高效做出美观笔记
  9. Fragment的介绍
  10. 关于windows7打不开hlp文件的解决方法