>  기사  >  백엔드 개발  >  PHP를 사용하여 SMS 인증 코드를 보내는 방법

PHP를 사용하여 SMS 인증 코드를 보내는 방법

php中世界最好的语言
php中世界最好的语言원래의
2018-05-14 13:52:1115040검색

저는 많은 타사 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[&#39;mobile&#39;]; //获取传入的手机号
// $mobile = "xxxxxxxxxxx"; //请用自己的手机号代替
$num = rand(1000,9999);   //随机产生四位数字的验证码
setcookie(&#39;shopCode&#39;,$num);
$text="【蒙羊羊】您的验证码是".$num."。";
$ch = curl_init();
 
/* 设置验证方式 */
curl_setopt($ch, CURLOPT_HTTPHEADER, array(&#39;Accept:text/plain;charset=utf-8&#39;,
&#39;Content-Type:application/x-www-form-urlencoded&#39;, &#39;charset=utf-8&#39;));
/* 设置返回结果为流 */
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 &#39;<pre class="brush:php;toolbar:false">&#39;;print_r($array);
 
// 发送短信
$data=array(&#39;text&#39;=>$text,&#39;apikey&#39;=>$apikey,&#39;mobile&#39;=>$mobile);
$json_data = send($ch,$data);
$array = json_decode($json_data,true);
// echo &#39;<pre class="brush:php;toolbar:false">&#39;;print_r($array);
 
// 发送模板短信
// 需要对value进行编码
$data = array(&#39;tpl_id&#39; => &#39;1&#39;, &#39;tpl_value&#39; => (&#39;#code#&#39;).
&#39;=&#39;.urlencode($num).
&#39;&&#39;.urlencode(&#39;#company#&#39;).
&#39;=&#39;.urlencode(&#39;蒙羊羊&#39;), &#39;apikey&#39; => $apikey, &#39;mobile&#39; => $mobile);
// print_r ($data);
$json_data = tpl_send($ch,$data);
$array = json_decode($json_data,true);
 
 
echo $num;
 
 
// 发送语音验证码
// $data=array(&#39;code&#39;=>$num,&#39;apikey&#39;=>$apikey,&#39;mobile&#39;=>$mobile);
// $json_data =voice_send($ch,$data);
// $array = json_decode($json_data,true);
// echo $num;
 
// 发送语音通知,务必要报备好模板
/*
模板: 课程#name#在#time#开始。 最终发送结果: 课程深度学习在14:00开始
 */
 
$tpl_id = &#39;xxxxxxx&#39;; //修改为你自己后台报备的模板id
$tpl_value = urlencode(&#39;#time#&#39;).&#39;=&#39;.urlencode($num).&#39;&&#39;.urlencode(&#39;#name#&#39;).&#39;=&#39;.urlencode(&#39;蒙羊羊&#39;);
$data=array(&#39;tpl_id&#39;=>$tpl_id,&#39;tpl_value&#39;=>$tpl_value,&#39;apikey&#39;=>$apikey,&#39;mobile&#39;=>$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, &#39;https://sms.yunpian.com/v2/user/get.json&#39;);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array(&#39;apikey&#39; => $apikey)));
$result = curl_exec($ch);
$error = curl_error($ch);
checkErr($result,$error);
return $result;
}
function send($ch,$data){
curl_setopt ($ch, CURLOPT_URL, &#39;https://sms.yunpian.com/v2/sms/single_send.json&#39;);
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,
&#39;https://sms.yunpian.com/v2/sms/tpl_single_send.json&#39;);
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, &#39;http://voice.yunpian.com/v2/voice/send.json&#39;);
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, &#39;https://voice.yunpian.com/v2/voice/tpl_notify.json&#39;);
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 &#39;Curl error: &#39; . $error;
}
else
{
//echo &#39;操作完成没有任何错误&#39;;
}
}
 
?>

이 PHP 백엔드는 공식 데모에서 제가 수정한 것입니다. 삭제음성 인증 기능은 SMS 인증만 유지하고 제공된 데이터를 반환합니다. 4자리 확인 코드만 유지하므로 프런트 엔드에서 확인 코드를 쉽게 확인할 수 있습니다.

공식 데모 원본 링크는 다음과 같습니다...Link

index.html

다음 코드는 ajax 요청을 클릭하여 전송하고, 요청한 인증코드를 localStorage에 저장하는 코드입니다

$.ajax({
  type: "post",
  url: "post.php", //后台代码文件名
  data: {
  mobile:$(&#39;#phone&#39;).val()//获取输入的手机号
  },
  // dataType: "json",
  success:function(data){
  console.log(data);
  layer.msg(&#39;验证码发送成功,请注意查收!&#39;);
  localStorage.setItem(&#39;code&#39;, JSON.stringify(data))
  },
  error:function(err){
  console.log(err);
  }
});

인증코드를 인증하세요

var code = JSON.parse(localStorage.getItem(&#39;code&#39;))
if($(&#39;#code&#39;).val() != code ){
  layer.msg(&#39;验证码输入错误&#39;);
  return false;
 }

믿습니다 이 사례를 읽으십시오. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주의 깊게 살펴보시기 바랍니다.

관련 자료:

예제와 함께 설명된 Ajax 비동기 요청 기술

PHP 대규모 트래픽 최적화?

PHP 사용자 정의 함수로 데카르트 곱을 생성하는 방법

위 내용은 PHP를 사용하여 SMS 인증 코드를 보내는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.