저는 많은 타사 SMS 서비스 제공업체 중에서 Yunpian.com을 선택했습니다. 또한 개발자가 SMS 인증 코드 기능 모듈 구현을 해결할 수 있도록 가장 간단한 방법을 사용하기 위해 최선을 다하겠습니다.
또 대부분의 온라인 블로그 등을 참고했습니다. 대부분은 Yunpian.com의 데모를 그대로 옮겼습니다. 프론트 엔드 직원인 저는 전혀 모르므로 자세히 설명하겠습니다. 내 소스코드를 운영하고 제공하는 방법.
내 업무 프로세스는 인증 코드를 보내는 버튼을 클릭하여 ajax 요청 event을 트리거하고 백그라운드로 휴대폰 번호를 보내는 것입니다. 백그라운드에서 인증 코드를 생성하여 휴대폰으로 보냅니다. 코드 확인을 위해 이 인증 코드를 프론트 데스크에 반환합니다.
요청한 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 '<pre class="brush:php;toolbar:false">';print_r($array); // 发送短信 $data=array('text'=>$text,'apikey'=>$apikey,'mobile'=>$mobile); $json_data = send($ch,$data); $array = json_decode($json_data,true); // echo '<pre class="brush:php;toolbar:false">';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 백엔드는 공식 데모에서 제가 수정한 것입니다. 삭제음성 인증 기능은 SMS 인증만 유지하고 제공된 데이터를 반환합니다. 4자리 확인 코드만 유지하므로 프런트 엔드에서 확인 코드를 쉽게 확인할 수 있습니다.
공식 데모 원본 링크는 다음과 같습니다...Link
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를 사용하여 SMS 인증 코드를 보내는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!