<?php
//发送短信验证码 【tel是手机号,传入的参数】
public function sendmsm(){
$tel = $this->request->param('tel');
//随机数
$random=$this->getRandPass();
$code = mt_rand(0000,9999);
$time = time();
$url = "https://yun.tim.qq.com/v5/tlssmssvr/sendsms?sdkappid=1400179119&random=".$random;
$str ="appkey=3e46b66ef2ee6a8f31cb5790912d9d86&random=".$random."&time=".$time."&mobile=".$tel."";
$sig=hash("sha256", $str);
$data = '{
"ext": "",
"extend": "",
"params": [
"山西高考",
"'.$code.'"
],
"sig": "'.$sig.'",
"sign": "婚介", //“婚介”是在腾讯后台申请的短信签名
"tel": {
"mobile": "'.$tel.'",
"nationcode": "86"
},
"time":" '.$time.'",
"tpl_id": "263640"
}';
session('dxyzm',$code);
$res=$this->curlData($url,$data,'POST');
echo $res;
}
//随机字符串
public function getRandPass($length = 12){
$password = '';
//将你想要的字符添加到下面字符串中,默认是数字0-9和26个英文字母
$chars = "0123456789";
$char_len = strlen($chars);
for($i=0;$i<$length;$i++){
$loop = mt_rand(0, ($char_len-1));
//将这个字符串当作一个数组,随机取出一个字符,并循环拼接成你需要的位数
$password .= $chars[$loop];
}
return $password;
}
//curl请求
public function curlData($url,$data=array(),$method = 'GET',$type='json')
{
//初始化
$ch = curl_init();
$headers = [
'form-data' => ['Content-Type: multipart/form-data'],
'json' => ['Content-Type: application/json'],
];
if($method == 'GET'){
if($data){
$querystring = http_build_query($data);
$url = $url.'?'.$querystring;
}
}
// 请求头,可以传数组
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HTTPHEADER,$headers[$type]);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 执行后不直接打印出来
if($method == 'POST'){
curl_setopt($ch, CURLOPT_CUSTOMREQUEST,'POST'); // 请求方式
curl_setopt($ch, CURLOPT_POST, true); // post提交
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); // post的变量
}
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 不从证书中检查SSL加密算法是否存在
$output = curl_exec($ch); //执行并获取HTML文档内容
curl_close($ch); //释放curl句柄
return $output;
}
?>