php利用云片网实现短信验证码功能的示例代码

2025-05-29 0 102

本文将以php举例,介绍网页短信验证码功能的实现。

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

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

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

请求的php后端代码如下

post.php

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125
<?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 '<pre>';print_r($array);

// 发送短信

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

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

$array = json_decode($json_data,true);

// echo '<pre>';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中

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16
$.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);

}

});

进行验证码验证

?

1

2

3

4

5
var code = JSON.parse(localStorage.getItem('code'))

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

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

return false;

}

以上验证码功能讲解完毕,如需源码请点击(源码) 自行下载,希望对大家的学习有所帮助,也希望大家多多支持快网idc。

原文链接:http://www.jianshu.com/p/5686eced7ab4

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 php利用云片网实现短信验证码功能的示例代码 https://www.kuaiidc.com/92987.html

相关文章

发表评论
暂无评论